#json #jsonpath
Вопрос:
У меня есть известное значение для элемента ENTRYID
в моем документе JSON. Я хочу получить Tasks.Id
для элемента Tasks
, который ENTRYID
соответствует моему известному значению. Проблема в том, что ENTRYID
она немного скрыта внутри Tasks
. В качестве примера приведем путь JSON для поиска первого ENTRYID
в документе.
$.Tasks[0].Activities[0].Entry.AnswersFlat[0].ENTRYID
Для перехода к ENTRYID
элементу из Tasks
элемента он всегда находится внутри Activities[0].Entry.AnswersFlat[0]
. Эти два массива не нуждаются в поиске.
Я знаю, что могу использовать ?(@.Tag == 'Known Value')
для поиска элементов, содержащих известное значение для определенного имени тега, но когда я пытаюсь использовать его в своем пути JSON, я продолжаю получать ошибки. Я пытался:
$.Tasks[?(@.Activities[0].Entry.AnswersFlat[0].ENTRYID=='95B53C6CF6104F0E86B5744083A22FAD')].Id
Но это возвращает ошибку.
Я также пытался вложить фильтры, но это также возвращает ошибку :
$.Tasks[?(@.Activites[?(@.Entry.AnswersFlat[?(@.ENTRYID=='95B53C6CF6104F0E86B5744083A22FAD')])])].Id
Каков правильный синтаксис в пути JSON, чтобы получить значение Tasks.Id
для моего известного значения ENTRYID
?
Я создал очень упрощенную версию своего документа для вашей справки:
{
"Tasks":[
{
"Id":"652a187f2a584a0f84aaadb9016cfa4b",
"Activities":[
{
"Entry":{
"AnswersFlat":[
{
"ENTRYID":"95B53C6CF6104F0E86B5744083A22FAD"
}
]
}
}
]
},
{
"Id":"e586073810a746cca440adb901090326",
"Activities":[
{
"Entry":{
"AnswersFlat":[
{
"ENTRYID":"7FD608F3F9E24EB084F58A1245677B3D"
}
]
}
}
]
}
]
}
Комментарии:
1. В итоге я переключил вывод данных на XML вместо JSON, и мне было так легко получить то, что я хотел.
//Task[.//ENTRYID="95B53C6CF6104F0E86B5744083A22FAD"]/Id
2.
$.Tasks[?(@.Activities[0].Entry.AnswersFlat[0].ENTRYID=='95B53C6CF6104F0E86B5744083A22FAD')].Id
дает точный результат в jsonpath.com . Какую реализацию jsonpath вы используете и на каком языке?3. @AkshayG Я поражен, раздражен и удивлен тем, что у меня уже был ответ и я не мог заставить его работать. Спасибо.
4. @AkshayG Я был на этом сайте, настройки по умолчанию, и когда я запускаю те же строки, это выдает мне ошибку… Я больше никогда не буду пользоваться этим сайтом…