微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编写 JSON Path 以根据字符串过滤器获取特定值?

如何解决如何编写 JSON Path 以根据字符串过滤器获取特定值?

我是 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"
            },"link": "api/v1/sweets/102","id": "102"
                }
            ]
        }
    ]
}

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

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。