首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有谓词的Jayway JsonPath滤波

带有谓词的Jayway JsonPath滤波
EN

Stack Overflow用户
提问于 2018-02-13 16:40:16
回答 1查看 1.1K关注 0票数 0

我最近学习了Jayway JsonPath,并且在inpath过滤的工作方式上遇到了麻烦。

所以我的JSON看起来如下:

在最上面我有共享的。这些共享程序有一个名为user的数组,它包含一个ID和一个名称,它们还包含一个名为dataset的项,它可以包含任何json。

这些共享也可以存在于数据集中。

我正在工作的JSON如下所示:

代码语言:javascript
复制
 {
    "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的用户的共享文件,所以我想要使用的路径如下:

代码语言:javascript
复制
$..shareable[ ?(@.user[*].ID == 1 )]

这里有一个硬编码的ID。

代码语言:javascript
复制
$..shareable[ ?(@.user[0].ID == 1 )]

返回第一个ID为1的任何可共享的。

我也尝试了一些类似于

代码语言:javascript
复制
$..shareable[ ?(@.user[?(@.ID == 1)]

我认为,如果用户ID为1,则应该返回任何可共享的用户。

我是不是走错路了?我是否需要以某种方式迭代存在的用户对象?

EN

回答 1

Stack Overflow用户

发布于 2018-02-15 12:31:17

好吧,我想明白了,所以如果有人偶然发现这个问题,查询应该如下所示:

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

其中用户只是userId的int。基本上,右边创建一个可共享的所有ID的列表,并检查请求的ID是否存在其中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48771565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档