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

Jolt Transform如何合并含多同字段、2个异字段的JSON对象

Jolt Transform 同id对象合并转换规则

以下是可直接使用的完整Jolt配置:

[
  // 按id分组,同id的各字段值收集为数组存储
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": {
          "*": {
            "@2.name": "product_&1.name",
            "@2.category": "product_&1.category",
            "@2.id": "product_&1.id",
            "@2.price": "product_&1.price",
            "@2.color": "product_&1.color"
          }
        }
      }
    }
  },
  // 提取固定字段的单值(同id的name、category、id值完全一致,取第一个元素即可)
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "name": "=firstElement(@(1,name))",
        "category": "=firstElement(@(1,category))",
        "id": "=toInteger(@(1,id[0]))"
      }
    }
  },
  // 处理price、color字段:单元素数组压平为单值,多元素保留数组格式
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "price": "=recursivelySquashLists",
        "color": "=recursivelySquashLists"
      }
    }
  }
]

转换效果说明

输入示例经过上述配置转换后,输出结果如下(注:你给出的输出示例存在语法错误,JSON数组不能包含键值对,正确结构外层为对象):

{
  "product_1": {
    "name": "Product A",
    "category": "fruit",
    "id": 1,
    "price": [10,20],
    "color": ["green","yellow"]
  },
  "product_2": {
    "name": "Product B",
    "category": "vegetable",
    "id": 2,
    "price": 30,
    "color": "blue"
  }
}

规则拆解

  1. 第一步shift操作:遍历所有输入对象,以id值为分组维度,将同id下所有字段的取值全部收集到对应的product_{id}节点下,多值自动转为数组存储。
  2. 第二步modify操作:name、category、id三个字段同组取值完全相同,直接取数组第一个元素作为最终单值,同时将id转回整数类型。
  3. 第三步modify操作:使用recursivelySquashLists函数处理price和color字段,自动判断数组长度:长度为1时直接返回元素本身,长度大于1时保留数组格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:54:03