0

我是 JSON Path 的新手,我正在尝试在 JSON 有效负载下方使用 JsonPath 获取与 name='Candy' 对应的“id”。

{
    "responsePayload": [
        {
            "content": {             
                "id": "101",               
                "name": "Candy"                
            },
            "links": [
                {
                    "rel": "self",
                    "link": "api/v1/sweets/101",
                    "id": "101"
                }
            ]
        },
        {
            "content": {                
                "id": "102",               
                "name": "Chocolate"
            },
            "links": [
                {
                    "rel": "self",
                    "link": "api/v1/sweets/102",
                    "id": "102"
                }
            ]
        }
    ]
}

为此,我尝试了 Jsonpath $.responsePayload[0].content[?(@.name=='Candy')].id但这不起作用。我正在使用https://jsonpath.com/来测试这个 JsonPath。请指导我如何达到所需的结果。

4

1 回答 1

0

你真的很亲近。您需要表达式中的更多路径。

$.responsePayload[?(@.content.name=='Candy')].content.id

你在你的[0]回应中只隔离了第一个元素,但听起来你想遍历整个数组responsePayload。为此,过滤器表达式选择器[?(...)]必须作用于该数组。

接下来,@代表当前项目,您可以从中构建完整路径。你可以在上面看到它是如何工作的。

最后,过滤器表达式选择器在表达式返回 true 时返回完整项。因此,您需要.content.id再次导航以获取您所追求的价值。

于 2021-06-16T20:09:25.133 回答