Положение
Используется на нашей платформе, https://dashdash.com - электронная таблица с интеграциями для известных веб-сервисов (и ваших частных API тоже).
Частный случай (тестируемый)
Рассмотрим следующий исходный JSON , я хочу вернуть только те элементы массива, которые имеют вложенные объекты B, C и G. G находится на другой глубине, чем B и C.
Ниже вы можете увидеть источник и 2 варианта возврата.
источник JSON
[
{
"A":"val1",
"B":"val2",
"C":"val3",
"D":{
"E":[
{
"F":"val4"
}
],
"G":[
{
"H":"val5",
"I":"val6",
"J":"val7"
}
]
}
},
{
"A":"val8",
"B":"val9",
"C":"val10",
"D":{
"E":[
{
"F":"val11"
}
],
"G":[
{
"H":"val12",
"I":"val13",
"J":"val14"
}
]
}
},
{
"A":"val15",
"B":"val16"
},
{
"A":"val8",
"B":"val9",
"C":"val10",
"D":{
"E":[
{
"F":"val11"
}
]
}
}
]
Ожидаемый доход Вариант 1.
[
{
"B":"val2",
"C":"val3",
"G":[
{
"H":"val5",
"I":"val6",
"J":"val7"
}
]
},
{
"B":"val9",
"C":"val10",
"G":[
{
"H":"val12",
"I":"val13",
"J":"val14"
}
]
}
]
Ожидаемый доход Вариант 2.
[
{
"B":"val2",
"C":"val3",
"D":{
"E":[
{
"F":"val4"
}
],
"G":[
{
"H":"val5",
"I":"val6",
"J":"val7"
}
]
}
},
{
"B":"val9",
"C":"val10",
"D":{
"E":[
{
"F":"val11"
}
],
"G":[
{
"H":"val12",
"I":"val13",
"J":"val14"
}
]
}
}
]
Где я
- Я могу извлечь все элементы массива, которые имеют B, C и D, с помощью запроса
$..['B','C','D']
Я пытался извлечь B, C и G, но все следующие запросы не выполняются:
$..['B','C','G']
: возвращает ноль.
$..['B','C',['D'].['G']]
: возвращает только объекты внутри G.
Опять же, я использую JayWay JsonPath https://github.com/json-path/JsonPath,, и мой код работает точно так же, как https://jsonpath.herokuapp.com.
Заранее спасибо