2014-07-14 4 views
1

내가 사용하는 추출 변수 규칙이 그대로 데이터를 반환하는 이유가 혼동 스럽습니다. 아래를 참조하십시오. 구문 분석하는apigee - Json 페이로드 추출 변수

json으로는 다음과 같습니다

{ 
    "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"매개 변수를 "false"로 설정하면 실패가 반환되므로 데이터가 없습니다. 따라서, 나는 "$. *"을 시도했다. 반환 된 결과 :

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

EntryNames가 너무 길기 때문에 이것이 가능한가? 길지는 못하지만 JSON 위협 요소 정책의 기본값에 잘 부합합니다.

나는 웹 기반 JSONPayload 파서와 $ .callNotificationSubscriptionList가 $ .callNotificationSubscriptionList.callEventSubscription [0]처럼 잘 작동했지만 나는이 JSON을 펌프 처리했다. 그러나 최상위 레벨을 제대로 확보 할 수 없다면 하위 레벨을 전혀 확보 할 수 없습니다.

+0

JSON이 정책을 통해 파싱하는 것이 예상 한 것과 같지 않은 것 같습니다. JSON 경로 추출 정책 이전에 AssignVariable 정책을 사용하여 전체 페이로드를 변수에 할당하고 디버그 뷰에서 해당 변수의 값을 확인할 수 있습니까? 이는 json 경로 추출 정책을 적용하려고 할 때 페이로드 값이 실제로 통과하는지 이해하는 데 도움이됩니다. –

+0

나는 이것을 해결했다 ... 태그가 "요청"이었고 이것이 응답 추출물이었다. 태그를 제거했는데 모두 잘 맞습니다. – user3784247

+0

듣기 좋습니다. 전체 정책과 문제를 해결 한 변경 사항을 답변 섹션에 추가 할 수 있습니다. –

답변

0

위의 사용자 의견에 따라 문제가 해결되었습니다.