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

如何用JOLT转换扁平数组为嵌套数组并添加根节点字段

JOLT配置方案:提取公共字段到data节点,剩余字段存入drives数组

示例输入

假设你的扁平数组输入如下(所有元素的Number/Category/Type字段值一致):

[
  {
    "Number": "DRV-001",
    "Category": "Storage",
    "Type": "SSD",
    "Model": "Samsung 980 Pro",
    "Capacity": "1TB"
  },
  {
    "Number": "DRV-001",
    "Category": "Storage",
    "Type": "SSD",
    "Model": "Crucial P3",
    "Capacity": "2TB"
  }
]

期望输出

{
  "data": {
    "Number": "DRV-001",
    "Category": "Storage",
    "Type": "SSD",
    "drives": [
      {
        "Model": "Samsung 980 Pro",
        "Capacity": "1TB"
      },
      {
        "Model": "Crucial P3",
        "Capacity": "2TB"
      }
    ]
  }
}

最终JOLT配置

[
  // 1. 映射字段:公共字段到data节点,剩余字段到drives数组
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Number": "data.Number",
        "Category": "data.Category",
        "Type": "data.Type",
        "*": "data.drives[]"
      }
    }
  },
  // 2. 去重公共字段:确保单个值而非数组(因数组每个元素都会赋值一次)
  {
    "operation": "cardinality",
    "spec": {
      "data": {
        "Number": "ONE",
        "Category": "ONE",
        "Type": "ONE"
      }
    }
  }
]

配置说明

  • Shift操作:遍历输入数组的每一个元素,将指定的三个字段直接映射到data节点下;用通配符*匹配剩余所有字段,逐个存入data.drives数组。
  • Cardinality操作:由于数组中每个元素都会给Number/Category/Type赋值一次,默认会生成数组格式,这一步强制将这些字段转为单个值(若原数组中这些字段值不一致,会保留最后一个元素的对应值;如果需要按字段分组,需额外调整逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:22:37