我很困惑为什么我使用的extractVariables规则是按原样返回数据。见下文。
json到Parse是:
{
"callNotificationSubscriptionList": {
"playAndCollectInteractionSubscription": [],
"recognitionInteractionSubscription": [],
"playAndRecordInteractionSubscription": [],
"callDirectionSubscription": [],
"callEventSubscription": [
{
"clientCorrelator": "112345",
"resourceURL": "http:someurl",
"callbackReference": {
"notifyURL": "someotherurlt",
"notificationFormat": "XML"
},
"filter": {
"data1": "data abc",
"data2": "data def",
"data3": "data xyz"
}
}
]
}
}
规则:
<JSONPayload>
<Variable name="callNotSubL">
<!-- <JSONPath>$.callNotificationSubscriptionList</JSONPath> -->
<JSONPath>$.*</JSONPath>
</Variable>
</JSONpayload>
当我使用被注释掉的值时,我得不到响应变量数据。如果我将“ignoreUnresolvedVariables”parm设置为“false”,则返回失败,因此它没有数据。因此,我尝试了“$。*”。有了这个,我回来了:
[
{
"callbackReference": {
"notifyURL": "someotherurlt",
"notificationFormat": "XML"
},
"filter": {
"data1": "data abc",
"data2": "data def",
"data3": "data xyz"
}
}
]
这可能是因为EntryNames太长了吗?我承认它们很长,但它们远低于JSON威胁保护策略中的默认值。
虽然基于Web的JSONPayload解析器和$ .callNotificationSubscriptionList工作得很好,但我确实按照$ .callNotificationSubscriptionList.callEventSubscription [0]工作,这就是我真正想要的。但是,如果我无法获得最高级别,我根本无法获得子级别。
我使用@Santanu的评论解决了这个问题:
似乎解析通过策略的JSON与您期望的不一样?您是否可以尝试在JSON路径提取策略之前使用AssignVariable策略将整个有效负载分配给变量,并在调试视图中检查该变量的值?当您尝试应用json路径提取策略时,这将有助于了解实际传递的有效负载值。
<Source>
标签是“请求”,这是一个响应提取。我删除了<Source>
标签,一切都很顺利