apigee - Json有效负载提取变量

时间:2014-07-14 21:52:41

标签: json variables extract apigee

我很困惑为什么我使用的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>

当我使用被注释掉的值时,我得不到响应变量数据。如果我设置&#34; ignoreUnresolvedVariables&#34; parm to&#34; false&#34;,我返回了一个失败,所以它没有数据。因此,我试过&#34; $。*&#34;有了这个,我回来了:

[
    {
        "callbackReference": {
            "notifyURL": "someotherurlt",
            "notificationFormat": "XML"
        },
        "filter": {
            "data1": "data abc",
            "data2": "data def",
            "data3": "data xyz"
        }
    }
]

这可能是因为EntryNames太长了吗?我承认它们很长,但它们远低于JSON威胁保护政策中的默认值。

我通过基于Web的JSONPayload解析器和$ .callNotificationSubscriptionList工作得很好,就像$ .callNotificationSubscriptionList.callEventSubscription [0]一样,这就是我真正追求的。但是,如果我无法获得最高级别,我根本无法获得子级别。

1 个答案:

答案 0 :(得分:0)

我使用@Santanu的评论解决了这个问题:

  

解析通过策略的JSON似乎与您期望的不一样?您是否可以尝试在JSON路径提取策略之前使用AssignVariable策略将整个有效负载分配给变量,并在调试视图中检查该变量的值?当您尝试应用json路径提取策略时,这将有助于了解实际传递的有效负载值。

<Source>标记是&#34;请求&#34;这是一个响应提取。我删除了<Source>标记,一切都很好