2

我正在使用 Jayway JsonPath 库从我的phoneNumbers类型为“iPhone”的 JSON 下面获取正确的“id”。

一般来说,我想知道当在子 JSON 对象中指定特定条件时,如何从块的根元素中查找某些内容。

我尝试了以下表达式,分别选择与 iPhone 类型关联的块以及 id 列表,但我无法访问id属于我的手机类型为 iPhone 的 JSON 对象的根元素。有人可以指导我吗?对于这个问题,我需要得到idas 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"
            }
        ]
    }
]
4

1 回答 1

0

我想你想让你的表情看起来更深。

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

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


编辑

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

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

请注意,这绝对是特定于实现的,并且可能不适用于任何其他库。

于 2020-10-06T03:16:02.693 回答