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

基于并行节点ID使用jsonpath-ng提取对应NAME值的问题

用jsonpath-ng基于ID提取并行节点的NAME值

核心思路:由于ID和NAME属于同一层级的并行节点,需要先定位到包含目标ID的节点,再从该节点中提取对应的NAME字段。

代码实现示例

假设你的JSON结构类似如下(数组嵌套对象,每个对象包含ID和NAME):

{
  "items": [
    {
      "ID": "50200df3-7476-4bab-86ab-1aae4c097095",
      "NAME": "ABC Creations"
    },
    {
      "ID": "123456",
      "NAME": "XYZ Corp"
    }
  ]
}

对应的Python代码:

from jsonpath_ng import parse
import json

# 加载你的JSON数据(这里用示例数据演示)
json_content = """
{
  "items": [
    {
      "ID": "50200df3-7476-4bab-86ab-1aae4c097095",
      "NAME": "ABC Creations"
    },
    {
      "ID": "123456",
      "NAME": "XYZ Corp"
    }
  ]
}
"""
data = json.loads(json_content)

# 指定要匹配的目标ID
target_id = "50200df3-7476-4bab-86ab-1aae4c097095"

# 构造JSONPath表达式:过滤出ID匹配的节点,再提取NAME
expr = parse(f'$..[?(@.ID == "{target_id}")].NAME')

# 执行查询并提取结果
results = [match.value for match in expr.find(data)]

# 输出结果
if results:
    print(f"对应NAME值:{results[0]}")
else:
    print("未找到匹配ID的NAME")

表达式说明

  • $..:递归遍历JSON中的所有节点,确保能找到任意层级下的目标节点
  • [?(@.ID == "{target_id}")]:过滤条件,筛选出ID字段等于目标值的节点
  • .NAME:从筛选出的节点中提取NAME字段的值

无论你的ID和NAME处于JSON的哪个层级,只要二者属于同一对象内,这个表达式都能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:58:18