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