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

如何编写JOLT Transformation规则实现数组拆分与关联重组?

JOLT转换规则实现需求

输入JSON

{
  "data": {
    "attribute": [
      {
        "name": "Name_1",
        "code": "TT01"
      },
      {
        "name": "Name_2",
        "code": "TT02"
      },
      {
        "name": "Name_3",
        "code": "TT03"
      },
      {
        "name": "Name_4",
        "code": "TT04-1"
      },
      {
        "name": "Name_5",
        "code": "TT04-2"
      }
    ],
    "data": [
      {
        "indicator": "abc",
        "value": [
          "1",
          "2",
          "3",
          "4",
          "5"
        ]
      },
      {
        "indicator": "def",
        "value": [
          "6",
          "7",
          "8",
          "9",
          "10"
        ]
      }
    ]
  }
}

期望输出JSON

[
    { "indicator": "abc", "name": "Name_1", "value": "1" },
    { "indicator": "abc", "name": "Name_2",  "value": "2" },
    { "indicator": "abc", "name": "Name_3",  "value": "3" },
    { "indicator": "abc", "name": "Name_4",  "value": "4" },
    { "indicator": "abc", "name": "Name_5",  "value": "5" },
    { "indicator": "def", "name": "Name_1",  "value": "6" },
    { "indicator": "def", "name": "Name_2",  "value": "7" },
    { "indicator": "def", "name": "Name_3",  "value": "8" },
    { "indicator": "def", "name": "Name_4",  "value": "9" },
    { "indicator": "def", "name": "Name_5",  "value": "10" }
]

JOLT转换规则

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "data": {
          "*": {
            "indicator": "&2_&1.indicator",
            "value": {
              "*": "&3_&2.&1.value"
            }
          }
        },
        "attribute": {
          "*": {
            "name": "&2_&1.name"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "indicator": "[&1].indicator",
        "name": "[&1].name",
        "value": "[&1].value"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": ""
    }
  }
]

规则解释

  1. 第一步Shift操作:

    • 按数组索引关联indicator、对应位置的value元素,以及attribute里的name元素,生成带索引标识的键(如data_0_0),每个键下存储对应位置的字段数据,确保位置一一对应。
    • 用&2_&1这类占位符保留层级索引,避免数据错位。
  2. 第二步Shift操作:

    • 将第一步生成的带索引的键,转换为数组对象结构,把同一索引下的indicator、name、value合并到单个对象中。
  3. 第三步Shift操作:

    • 移除外层多余的索引键,直接输出最终的数组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:38:24