客观的:
- 我有一个带有 JSON 对象数组的 JSON。
- 我只想返回具有特定字符串的某些成员(字符串:元素)的数组对象。
- 在数组中的那些过滤对象中,我只想返回过滤后的字符串,而不是整个对象。
- 所有测试都在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。
- 理想情况下,我只想返回:
- B、C 和 G. 或
- B、C 和 DG
谢谢