Objective:
- I have a JSON with an array of JSON objects.
- I want to return only array objects that have certain members (string:element) with particular strings.
- Of those filtered objects in the array, I want to return only the filtered strings, not the whole object.
- All tests are being made at https://jsonpath.herokuapp.com.
I have advanced a bit, after this previous question was solved.
Consider the following 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"
}
]
}
}
]
On a JsonPath (Java JayWay) parser, the following path:
[?(@.B && @.C && @.D.G)]['B','C','D']
returns:
- only objects that have B, C and D.G.
- for each object, it returns only B, C and 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"
}
]
}
}
]
What is missing:
- This solution still returns E (D.E), and has G nested.
- Ideally, I would like to return only:
- B, C, and G. or
- B, C and D.G.
thanks