[英]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.