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

如何用JOLT将对象数组转换为指定结构的对象数组?

JOLT数组拆分与动态键名处理方案

输入JSON

[
  {
    "id": "1",
    "home_phone": [
      "55555555",
      "66666666"
    ]
  },
  {
    "id": "2",
    "home_phone": [
      "77777777",
      "88888888"
    ]
  }
]

期望输出JSON

[
  {
    "id": "1",
    "home": "55555555"
  },
  {
    "id": "1",
    "home": "66666666"
  },
  {
    "id": "2",
    "home_phone": "77777777"
  },
  {
    "id": "2",
    "home_phone": "88888888"
  }
]

问题分析

原尝试的规则没实现根据id值动态切换键名的逻辑,而且拆分数组元素时,id和电话的关联方式错误,没法生成每个电话对应独立对象的结构。

解决方案

使用带条件分支的Shift操作,根据id的值动态指定键名,同时将每个home_phone元素与对应id绑定为独立对象:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "home_phone": {
          "*": {
            "@(2,id)": {
              "1": {
                "@": "[].home",
                "@(3,id)": "[].id"
              },
              "2": {
                "@": "[].home_phone",
                "@(3,id)": "[].id"
              }
            }
          }
        }
      }
    }
  }
]

规则解释

  • 第一层*:逐个处理输入数组里的每个对象;
  • home_phone下的*:逐个处理每个对象里的home_phone数组元素;
  • @(2,id):获取当前元素往上两层的id值(即当前对象的id);
  • "1"和"2"分支:根据id值分别指定键名,id为1时用home,id为2时用home_phone;
  • @:指代当前正在处理的home_phone元素的值;
  • @(3,id):获取最外层对象的id,绑定到新对象的id字段;
  • []:每处理一个电话就生成一个新的数组元素,确保每个电话对应独立对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:47:39