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

如何编写JSONPath表达式获取含指定键的所有JSON对象(含根对象)

解决JSONPath匹配含指定键的根对象及所有子对象问题

你之前用的$..*[?(@.key1)]取不到根对象,是因为$..*只会遍历根节点的所有后代节点,不包含根节点本身。要同时匹配根节点和所有含指定键的子对象,你可以用逗号分隔两个表达式,把根节点的检查和后代节点的查询合并:

$[?(@.key1)],$..*[?(@.key1)]

原理说明

  • $[?(@.key1)]:单独检查根对象是否包含key1,如果包含就返回根对象
  • $..*[?(@.key1)]:遍历所有后代节点,筛选出包含key1的对象
  • 逗号在多数JSONPath实现里表示合并多个表达式的结果,这样就能同时拿到根对象和符合条件的子对象

示例验证

假设你的JSON结构是:

{
  "key1": "root content",
  "key3": {
    "key1": "key3 content"
  },
  "key5": {
    "key1": "key5 content"
  },
  "key2": {
    "key6": "no key1 here"
  }
}

用上述表达式会返回三个对象:根对象、key3对应的子对象、key5对应的子对象,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:23:10