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

如何用JSON Path表达式关联ID解析JSON数据生成表格

JSON Path 关联ID与字段的解决方案

你当前的核心问题是没法把$.data下的键(也就是你提到的ID:2、6、8这类)和对应子对象里的high、highTime、low、lowTime字段关联起来,下面针对不同JSON Path工具给出可行方案:

1. 支持键名提取的工具(如Jayway JsonPath)

这类工具允许直接获取节点的键名,你可以用以下方式提取对应数据:

  • 提取所有ID:$.data.*~(~符号专门用来获取当前节点的键名)
  • 提取对应ID的high字段:$.data.*.high
  • 提取对应ID的highTime字段:$.data.*.highTime
  • 提取对应ID的low字段:$.data.*.low
  • 提取对应ID的lowTime字段:$.data.*.lowTime

如果工具支持对象合并,还可以用表达式直接生成包含ID的完整对象:

$.data.*.merge(@, {'id': $~})

(merge是Jayway的扩展函数,用来把当前子对象和包含ID的新对象合并成一个完整对象,方便直接生成表格)

2. .NET环境下用Newtonsoft Json.NET

如果是在.NET里处理,直接遍历属性关联更直观:

JObject data = JObject.Parse(jsonString);
var result = data["data"]
    .Children<JProperty>()
    .Select(p => new {
        ID = p.Name,
        High = p.Value["high"],
        HighTime = p.Value["highTime"],
        Low = p.Value["low"],
        LowTime = p.Value["lowTime"]
    })
    .ToList();

对应的JSON Path辅助提取:

  • ID列表:$.data.@keys
  • 各字段列表:$.data.*.high、$.data.*.highTime等,顺序和ID列表一一对应

示例验证

假设你的JSON结构如下:

{
  "data": {
    "2": {
      "high": 100,
      "highTime": "2024-01-01",
      "low": 50,
      "lowTime": "2024-01-01"
    },
    "6": {
      "high": 200,
      "highTime": "2024-01-02",
      "low": 150,
      "lowTime": "2024-01-02"
    },
    "8": {
      "high": 150,
      "highTime": "2024-01-03",
      "low": 80,
      "lowTime": "2024-01-03"
    }
  }
}

提取后生成的目标表格:

IDhighhighTimelowlowTime
21002024-01-01502024-01-01
62002024-01-021502024-01-02
81502024-01-03802024-01-03

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:30:13