apigee - Json有效负载提取变量

问题描述 投票:1回答:1

我很困惑为什么我使用的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]工作,这就是我真正想要的。但是,如果我无法获得最高级别,我根本无法获得子级别。

json variables extract apigee
1个回答
0
投票

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

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

<Source>标签是“请求”,这是一个响应提取。我删除了<Source>标签,一切都很顺利

© www.soinside.com 2019 - 2024. All rights reserved.