2016-08-16 6 views
0

배열 요소 인 JSON 데이터가 있습니다. 그러나 배열이 하나의 요소 만 포함하면 정보는 배열 대신 문자열로 제공됩니다. 아래의 $ .phoneNumbers.type 요소를 참조하십시오. 첫 번째 전화 번호에서 "type"요소는 배열로 표시되지만 배열에는 하나의 요소 ("iPhone") 만 포함됩니다. 두 번째 전화 번호에서 유형은 단순한 문자열 ("home")입니다.Jsonpath 표현식을 사용하여 문자열 또는 배열 선택

{ 
    "firstName": "John", 
    "lastName" : "doe", 
    "age"  : 26, 
    "address" : { 
    "streetAddress": "naist street", 
    "city"   : "Nara", 
    "postalCode" : "630-0192" 
    }, 
    "phoneNumbers": [ 
    { 
     "type" : ["iPhone"], 
     "number": "0123-4567-8888" 
    }, 
    { 
     "type" : "home", 
     "number": "0123-4567-8910" 
    } 
    ] 
} 

나는 JSONPath이 표현을 사용하여이 구문을 분석 할 때 : 요소가 배열 괄호에 싸여 있지 않은 경우

$.phoneNumbers[0].type[0] 

나는 다음과 같은 오류가 발생합니다.

Filter: [0] can only be applied to arrays. Current context is: home - Line: 0" 

이들 중 하나를 성공적으로 파싱 할 수있는 JSONPath 표현식이 있습니까? 기본적으로 요소가 배열인지 문자열인지를 먼저 확인한 다음 필요에 따라 다음과 같이 조정할 필요가 있다고 생각합니다.

배열 인 경우 : $ .phoneNumbers [0] .type [0]

이 문자열 인 경우 : .phoneNumbers [0]이 가능

을 .type $?

답변