【发布时间】:2018-02-13 16:40:16
【问题描述】:
我最近开始使用 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 的任何可共享对象。
我会以错误的方式解决这个问题吗?我是否需要以某种方式遍历存在的用户对象?
【问题讨论】: