簡體   English   中英

Object 和數組的 Jayway JSONPath Expession

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM