아래 JSON 예제에서 source.id == 'x'인 객체의 target.id 값을 반환하고 싶습니다.중첩 된 표현식을 사용하여 JSON 객체를 찾는 방법은 무엇입니까?
그래서 source.id == 'startId'는 target.id == '3eecd840-e6a8-423c-a892-7df9646fde5d'를 반환합니다.
{
"line":[
{
"type":"link",
"source":{
"id":"startId",
"port":"out"
},
"target":{
"id":"3eecd840-e6a8-423c-a892-7df9646fde5d",
"port":"in"
},
"id":"87d88a26-3a28-4db0-8016-71c1c4665f14"
},
{
"type":"link",
"source":{
"id":"3eecd840-e6a8-423c-a892-7df9646fde5d",
"port":"outYes"
},
"target":{
"id":"49940c02-70f2-4c53-ab50-9cbf96903600",
"port":"in"
},
"id":"9f8c365e-9ca7-440f-a722-c4f340782c0c"
}
]
}
JSONPath를 시도했지만 사용할 표현식을 찾을 수 없습니다. $ .line [*]. source.id는 나에게 소스 ID와 $ .line [? (@. source.id == 'startId')]의 목록을 제공하여 오류를 반환합니다.
코드의 각 객체를 반복 할 수 있다는 것도 이해하지만, 수십 또는 수백 개의 '선'이 작동하면 매우 효율적이지 않습니다. 가능한 경우 객체에 대한 '직접적인'경로를 원합니다.
저는 자바 스크립트를 사용하여 나머지 응용 프로그램을 코딩하므로 자바 스크립트 예제가 도움이됩니다 (JSONPath의 유무에 관계없이).
이유라도 같은 값을 얻을 수
Array.filter
함께 할 수 있습니까? (JSON이 아닌, 객체 그래프입니다 .JSON은 * 텍스트 * 표기법입니다.) 질문에서 JSON을 텍스트로 사용하는 것 같습니다. –
JSONPath는 그 이름에도 불구하고 여전히 작동하는 것 같습니다. JSON 문자열이 아니라 파싱 된 객체. 따라서 객체를 반복합니다. –
예 JSON을 문자열로 시작한 다음 JSON.parse (x)를 사용하여 객체를 만듭니다. JSONPath를 사용하면 json을 조각 내릴 수 있지만 다른 객체 값 즉, 객체 값을 기반으로 객체 값을 선택할 수있는 것처럼 보이지 않습니다. 'source'= foo 인 'target'을 선택하십시오 –