Цель:
- У меня есть JSON с массивом объектов JSON.
- Я хочу вернуть только объекты массива, которые имеют определенные члены (string: element) с определенными строками.
- Из этих отфильтрованных объектов в массиве я хочу вернуть только отфильтрованные строки, а не весь объект.
- Все тесты выполняются в https://jsonpath.herokuapp.com.
Я немного продвинулся, после этого предыдущий вопрос был решен.
Рассмотрим следующий 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"
}
]
}
}
]
В синтаксическом анализаторе JsonPath (Java JayWay) следующий путь:
[?(@.B && @.C && @.D.G)]['B','C','D']
возвращает:
-только объекты, имеющие B, C и DG
- для каждого объекта он возвращает только B, C и D.
[
{
"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"
}
]
}
}
]
Чего не хватает:
- Это решениепо-прежнему возвращает E (DE) и имеет вложенную G.
- В идеале я хотел бы вернуть только:
спасибо