我最近学习了Jayway JsonPath,并且在inpath过滤的工作方式上遇到了麻烦。
所以我的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,则应该返回任何可共享的用户。
我是不是走错路了?我是否需要以某种方式迭代存在的用户对象?
发布于 2018-02-15 12:31:17
好吧,我想明白了,所以如果有人偶然发现这个问题,查询应该如下所示:
$..shareable[?( @.user*.ID中的“+ user +”)]
其中用户只是userId的int。基本上,右边创建一个可共享的所有ID的列表,并检查请求的ID是否存在其中。
https://stackoverflow.com/questions/48771565
复制相似问题