繁体   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