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

如何基于JSON文档中的person.id值执行JSONPath查询?

解决JSONPath匹配person.id对应account的问题

原表达式的问题

你写的表达式$..accounts[?@.id == $.person.id]]存在两个问题:

  • 末尾多了一个多余的闭合方括号],属于语法错误
  • 部分JSONPath实现中,过滤谓词([?...])内的$会指向当前遍历的数组元素,而非根节点,导致无法正确引用$.person.id

正确的JSONPath表达式

根据不同的JSONPath实现,有两种可靠写法:

写法1:明确根节点引用(支持$root的实现,如Jayway JSONPath)

$.result.accounts[?@.id == $root.person.id]

用$root明确指定根节点,确保在谓词中能正确取到person.id的值。

写法2:直接使用根路径(部分实现支持,如Goessner的JSONPath)

$.result.accounts[?@.id == $.person.id]

去掉多余的方括号后,直接用根路径引用$.person.id,部分实现可以正确识别这个引用。

验证结果

使用上述正确表达式后,会返回匹配的account对象:

{
    "id": "5678",
    "details": [
        {
            "name": "efgh"
        }
    ]
}

注:你期望的结果中details里的id字段在原始JSON中不存在,应该是笔误,实际返回结果会和原始JSON结构一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:30:04