Из приведенного ниже примера JSON я хотел бы вернуть значение target.id объекта, где source.id == 'x'.
Итак, где 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 дает мне список идентификаторов источников, а $.line[?(@.source.id=='startId')] возвращает ошибку.
Я также понимаю, что я мог бы перебирать каждый объект в коде, но это было бы не очень эффективно, если бы мне приходилось работать с десятками или сотнями «строк». Если возможно, я хотел бы более «прямой» путь к объекту.
Я использую javascript для кодирования остальной части приложения, поэтому примеры javascript будут полезны (с JSONPath или без него).