You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jayway JSON Path检查字符串是否在JSON数组中并返回指定节点?

问题分析与正确JSONPath查询语句

你的错误点:

  • 路径语法错误:$.school.class.[?()]中class后面多了一个多余的点,正确的路径应该是$.school.class[?()],节点后直接跟条件判断即可,无需额外的点。
  • 条件判断语法误用:
    1. Jayway JSON Path中,单个值匹配数组元素应该用in关键字或contains函数,而非anyof(anyof用于判断两个数组是否存在交集,不适合单值匹配数组的场景)。
    2. 你写的@.'john'是错误的节点引用方式,@代表当前的class节点,你需要检查的是该节点下的student_list数组,所以应该用@.student_list。

正确的查询语句

1. 精确匹配(区分大小写)

如果要严格匹配'John'(和原JSON中的大小写一致),可以用两种写法:

$.school.class[?('John' in @.student_list)]

或者:

$.school.class[?(@.student_list contains 'John')]

2. 不区分大小写匹配

如果需要忽略大小写匹配(比如输入'john'也能匹配原JSON中的'John'),可以借助Jayway的toLowerCase()函数:

$.school.class[?('john' in @.student_list.toLowerCase())]

或者:

$.school.class[?(@.student_list.toLowerCase() contains 'john')]

验证结果

使用上述正确语句查询你的示例JSON,当传入'John'(或小写'john',对应不区分大小写的语句)时,会返回完整的class节点:

{
    "standard": "6",
    "student_list": [
        "Daniel",
        "Jack",
        "John"
    ]
}

内容的提问来源于stack exchange,提问作者user13906258

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:25:16