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

如何用JOLT转换复杂JSON嵌套数组?字段映射难题求助

解决JOLT嵌套数组转对象并关联表头的问题

看起来你已经找对了大致方向,但需要调整JOLT spec的层级映射逻辑,确保meta、name这类全局字段能复制到每个生成的对象里,同时让values数组的元素和headers表头精准对应上。

问题拆解

你的当前spec有两个核心问题需要修正:

  1. 没有将meta和data.name的字段同步到每个values子数组对应的对象中
  2. 数组索引的层级映射需要调整,保证values的元素能正确关联headers的对应表头

正确的JOLT Spec

下面的spec分三步完成转换逻辑,每一步的职责清晰:

  1. 先将values的元素按headers映射成键值对,同时暂存meta和name字段
  2. 把暂存的全局字段合并到每个数组对象中
  3. 整理出最终的纯净数组结构
[
  // 第一步:映射values到headers,并暂存全局字段
  {
    "operation": "shift",
    "spec": {
      "data": {
        "details": {
          "values": {
            "*": {
              "*": {
                "@(3,headers[&1])": "[&2].&"
              }
            }
          }
        },
        "name": "tempName"
      },
      "meta": {
        "*": "tempMeta.&"
      }
    }
  },
  // 第二步:将暂存的全局字段合并到每个对象
  {
    "operation": "shift",
    "spec": {
      "[0-9]*": {
        "@": "&",
        "@(1,tempName)": "&.name",
        "@(1,tempMeta.regId)": "&.regId",
        "@(1,tempMeta.cId)": "&.cId",
        "@(1,tempMeta.weId)": "&.weId"
      }
    }
  },
  // 第三步:整理为最终目标数组
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

关键逻辑解释

  • 第一步里的@(3,headers[&1]):从当前元素(values[i][j])往上数3层定位到headers数组,用当前元素的索引&1(也就是j)匹配对应的表头作为键名;[&2]表示把键值对放到数组的第i个位置(&2是values子数组的索引)。
  • 第二步通过@(1,tempName)和@(1,tempMeta.*),把暂存的全局字段合并到每个数组对象里,保证每个对象都包含完整的信息。
  • 第三步把带数字索引的对象重新整理成纯净的数组,和你期望的输出结构完全匹配。

用这个spec处理你的输入JSON,就能得到想要的结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:27:30