根据子元素条件使用jsonpath获取根元素

时间:2020-08-18 14:13:12

标签: java jsonpath json-path-expression

我正在与Jayway JsonPath库一起从我的phoneNumbers类型为'iPhone'的JSON下面获取正确的'id'。

通常,我想知道在子JSON对象中指定了特定条件时如何从块的根元素中查找内容。

我尝试了以下表达式,分别选择了与iPhone类型关联的块以及ID列表,但是我无法进入属于JSON对象的根元素id,其中我的手机类型为iPhone 。有人可以指导我吗?对于这个问题,我需要将id设为1。

要获取ID列表:$[*].id

要获取与iPhone类型相对应的json对象:$[*].phoneNumbers[?(@.type=='iPhone')]

[
    {
        "id": "1",
        "phoneNumbers": [
            {
                "type": "iPhone",
                "number": "0123-4567-8888"
            },
            {
                "type": "home",
                "number": "0123-4567-8910"
            }
        ]
    },
    {
        "id": "2",
        "phoneNumbers": [
            {
                "type": "x",
                "number": "0123-4567-8888"
            },
            {
                "type": "y",
                "number": "0123-4567-8910"
            }
        ]
    }
]

1 个答案:

答案 0 :(得分:0)

我认为您希望您的表情更深入。

首先,在电话号码列表中找到具有iPhone的对象。然后只需选择ID。

尝试$[?(@.phoneNumbers[*].type=="iPhone")].id


修改

看起来Java JsonPath库(我想您正在使用它)支持许多功能。它没有列出contains(),但是您可以尝试使用anyof运算符:

$[?(@.phoneNumbers[*].type anyof ["iPhone"])].id

请注意,这绝对是特定于实现的,可能无法与其他任何库一起使用。