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

为何指定JSONPath匹配JSON对象无结果?是否路径写法有误?

JSONPath写法问题解析

你用的$.test_type[?(@.id == 'myId')]之所以没返回结果,核心原因是过滤器[?(...)]是用来筛选数组元素的,不能直接套在单个对象上——$.test_type指向的是一个单独的JSON对象,不是数组,所以过滤器无法生效。

而..[?(@.id=='myId')]能正常匹配,是因为..是递归遍历运算符,会扫遍所有层级的节点,当它碰到带id字段的test_type对象时,过滤器就能匹配上这个节点。

正确的写法参考

如果要精准定位test_type并验证它的id值,推荐两种方式:

  • 直接访问对象后单独校验(最简洁通用)
    先通过$.test_type拿到目标对象,再判断它的id属性是否等于myId,这在绝大多数场景下都适用。

  • 把单个对象转为数组后用过滤器(适合必须用过滤器的场景)
    部分JSONPath实现允许把单个对象包装成数组来应用过滤器,写法比如:

    $.[test_type][?(@.id == 'myId')]
    

    或者有些实现支持这种简化写法:

    $.test_type[(@.id == 'myId')]
    

    不过这种写法兼容性不如第一种,优先选直接访问的方式更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:24:59