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

是否存在与XPath双斜杠(//)“任意后代”搜索等效的JMESPath语法?

JMESPath 实现 XPath 任意后代元素搜索的等效语法

在XPath中,要搜索任意层级下匹配特定路径的后代元素,比如查找所有包含子元素b的a元素,可用查询语句//a/b。

举个XML文档的例子:

<foo>
  <bar>
    <a><b>first</b></a>
  </bar>
  <a><b>second</b></a>
</foo>

使用//a/b可以找到<b>first</b>和<b>second</b>这两个元素。

那在JSON和JMESPath中,有没有对应的等效语法?比如针对下面这个JSON文档:

{
  "foo": {
    "bar": {
      "a": {"b": "first"}
    },
    "a": {"b": "second"}
  }
}

要获取{"b": "first"}和{"b": "second"}这两个结果,该怎么写JMESPath语句?


答案是肯定的,JMESPath里的递归下降运算符..就能实现类似XPath中//的任意层级搜索效果。

针对上述JSON文档,对应的JMESPath查询语句为:

..a

执行这个语句后,就能直接得到目标结果:

[
  {
    "b": "first"
  },
  {
    "b": "second"
  }
]

如果要进一步精准获取b字段的值,还可以写成:

..a.b

结果会是:

[
  "first",
  "second"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:07:07