首页 > 解决方案 > JSONPath - 如果数组包含字符串,则过滤表达式以打印字段

问题描述

我有以下 JSON,并且正在尝试编写一个 JSON 路径表达式,当我的 id 为“123456789”或“987654321”时,它将返回 isbn 编号。我尝试了以下方法,但这没有用。谁能告诉我我做错了什么。提前致谢

JSON 路径表达式

$.books[?(@.ids== '123456789' )].isbnNumber

JSON

{
    "books": [{
        "title": "10",
        "isbnNumber": "621197725636",
        "ids": [
            "123456789",
            "987654321"
        ]
    }]
}

标签: jsonpath

解决方案


(更传统的)JSONPath 实现贴近(r)Goessner 的参考规范不提供方便的功能in,如 JayWay 的 JSONPath 等扩展实现中可用的功能。
使用 Gatling 的 JSONPath,如果相关 Id 的位置是固定的,我们可以做的一件事是直接访问它们各自的索引以进行比较:

$.books[?(@.ids[0] == "123456789" || @.ids[1] == "987654321")].isbnNumber

这将为您提供示例所需的结果;但是,有些书只有两个索引之一,或者它们的 Id 比较显示在不同的位置上,它不起作用。


推荐阅读