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

如何用ObjectPath获取未知键名?附JMESPath实现对比

使用ObjectPath获取对象路径中的未知键名

嘿,这事儿好办!针对你给出的groups结构,ObjectPath里有对应的方法来获取那些动态的键名,和JMESPath的keys(@)用法逻辑一致,具体看下面的说明:

首先先明确你的目标数据结构:

{
  "groups": {
    "800": {
      "short_name": "22",
      "oname": "11",
      "group": 8,
      "title": "SS",
      "name": "33",
      "onames": [""],
      "alt_name": false,
      "waytype": 1,
      "multiple": 1,
      "primary": 1
    },
    "801": {
      "short_name": "ss",
      "oname": "zz",
      "group": 8,
      "title": "ss",
      "name": "bbb",
      "onames": [""],
      "alt_name": false,
      "waytype": 1,
      "multiple": 1,
      "primary": 0
    }
  }
}

核心查询表达式

要获取groups下的所有未知键名(也就是["800", "801"]),直接使用ObjectPath的keys()函数即可,对应的表达式是:

$.groups.keys()

这个表达式会直接返回目标对象的所有键名组成的数组,完全满足你的需求。如果你的查询上下文已经定位到了groups节点内部,也可以简化为keys(@),和JMESPath的用法完全对应。

实际代码示例(以Python的objectpath库为例)

如果是在代码里实际调用,你可以这么写:

import objectpath
import json

# 加载你的数据
data = json.loads('''{
  "groups": {
    "800": {
      "short_name": "22",
      "oname": "11",
      "group": 8,
      "title": "SS",
      "name": "33",
      "onames": [""],
      "alt_name": false,
      "waytype": 1,
      "multiple": 1,
      "primary": 1
    },
    "801": {
      "short_name": "ss",
      "oname": "zz",
      "group": 8,
      "title": "ss",
      "name": "bbb",
      "onames": [""],
      "alt_name": false,
      "waytype": 1,
      "multiple": 1,
      "primary": 0
    }
  }
}''')

# 创建ObjectPath树结构
tree = objectpath.Tree(data)

# 执行查询并获取结果
result = list(tree.execute('$.groups.keys()'))
print(result)  # 输出: ['800', '801']

这样就能轻松拿到你需要的动态键名啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:17:57