[英]Jayway JSONPath Expession for Both Object and Array
如果父元素既可以是 JSONArray 也可以是 JSONObject,我就不得不麻烦地检索值。 为此,我使用 Deepcopy 语法来检索它。 如果内部数组中也存在子属性,现在的问题是获得额外的值。
例如:JpathExpression:
$.store..book..innerBook..category
结果是:
[
"innerReference1",
"innerBook1Ref1",
"innerReference2"
]
示例 1 预期结果是:
[
"innerReference1",
"innerReference2"
]
示例 1:
{
"store": {
"book": [
{
"innerBook": [
{
"category": "innerReference1",
"author": "Nigel Rees",
"innerBook1": [
{
"category": "innerBook1Ref1"
}
]
},
{
"category": "innerReference2",
"author": "Nigel Rees"
}
]
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
示例 2:
{
"store": {
"book": [
{
"innerBook":
{
"category": "innerReference1",
"author": "Nigel Rees",
"innerBook1": [
{
"category": "innerBook1Ref1"
}
]
}
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
示例 2 预期结果是:
[
"innerReference1"
]
然而,有点晚了,我们不需要在innerBook
之后使用递归下降..
来遍历数组中的项目; 使用 Jayway,我们可以使用innerBook[*].category
来检索所需的结果,例如 1:
$.store..book..innerBook[*].category
示例 2 需要删除数组访问器:
$.store..book..innerBook.category
您不能将innerBook
作为数组和 object 放在一个 JSON 中,因为它无效。
If you have an API (or so) that serves JSON with an innerbook
property of array or object type (which would be a badly designed API since the whole point of an API is to have expected responses) you could either query both paths or make类别的访问取决于innerBook1
的存在:
$.store.book..innerBook[?(@.innerBook1)]..category
仅返回两个示例
[
"innerReference1",
"innerBook1Ref1"
]
在这里在线尝试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.