簡體   English   中英

Jayway JsonPath過濾謂詞

[英]Jayway JsonPath filtering with predicates

我最近開始從事Jayway JsonPath的工作,而在入口路徑過濾的工作方式上遇到了麻煩。

所以我的JSON看起來像這樣:
在頂部,我有共享的東西。 這些可共享對象具有一個名為user的數組,其中包含一個ID和名稱,並且還包含一個名為dataset的項,該項可以包含任何json。
這些可共享內容也可以存在於數據集中。
我的工作JSON看起來像這樣:

 {
    "shareable": {
        "user": [ 
            {
                "ID": 1,
                "Name": "Bob"
            },
            {
                "ID": 2,
                "Name": "Charles"
            }
        ],
        "dataSet": [
            { 
                "insulinMeasurement": 
                {
                    "timestamp": "Tuesday Morning",
                    "measurement": 174,
                    "unit": "pmol/L"
                } 
            },
            { 
                "insulinMeasurement": 
                {
                    "timestamp": "Tuesday Noon",
                    "measurement": 80,
                    "unit": "pmol/L"
                } 
            },
            { "shareable": {
                "user": [
                    { 
                        "ID": 3,
                        "Name": "Jim" 
                    }
                ],
                "dataSet": [
                    { 
                        "insulinMeasurement": 
                        {
                            "timestamp": "Tuesday Evening",
                            "measurement": 130,
                            "unit": "pmol/L"
                        } 
                    }
                ]
                }
            },
            { "unshareable": {
                "user": [ 
                    { 
                            "ID": 2,
                            "Name": "Bob"
                    }
                ],
                "dataSet": [
                    { 
                        "insulinMeasurement": 
                        {
                            "timestamp": "Tuesday Night",
                            "measurement": 130,
                            "unit": "pmol/L"
                        } 
                    }
                ]
                }
            }
        ]
    }
}  

所以我想要的是所有具有用戶ID的共享對象。 所以我想出了我要使用的路徑,如下所示:

$..shareable[ ?(@.user[*].ID == 1 )]

這里有一個硬編碼的ID。 這什么都不返回

$..shareable[ ?(@.user[0].ID == 1 )]

返回第一個ID為1的任何可共享內容。
我也嘗試了一些類似的方法

$..shareable[ ?(@.user[?(@.ID == 1)]

我認為應該返回ID為1的用戶的任何可共享內容。
我會以錯誤的方式處理嗎? 我是否需要以某種方式遍歷存在的用戶對象?

好吧,我知道了,因此,如果有人偶然發現此問題,查詢應如下所示:

$ .. shareable [?(@ .user [*]。ID)中的“ +用戶+”

其中user只是userId的int。 基本上,右側會創建可共享包含的所有ID的列表,並檢查其中是否存在所請求的ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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