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

Jolt Transform多对象数组转换异常,请求修正Spec

Jolt Transform 多对象数组拆分问题修正方案

当用Jolt Transform处理JSON数组时,单对象输入能正常拆分出独立条目,但多对象输入时,qty和type会被合并成列表,无法生成独立对象。以下是具体示例及修正后的Jolt规则:

输入示例

[
  {
    "id": "1",
    "details": [
      {"qty": 2, "type": "A"},
      {"qty": 3, "type": "B"}
    ]
  },
  {
    "id": "2",
    "details": [
      {"qty": 1, "type": "C"},
      {"qty": 4, "type": "D"}
    ]
  }
]

当前错误输出

[
  {
    "id": "1",
    "qty": [2, 3],
    "type": ["A", "B"]
  },
  {
    "id": "2",
    "qty": [1, 4],
    "type": ["C", "D"]
  }
]

期望输出

[
  {"id": "1", "qty": 2, "type": "A"},
  {"id": "1", "qty": 3, "type": "B"},
  {"id": "2", "qty": 1, "type": "C"},
  {"id": "2", "qty": 4, "type": "D"}
]

修正后的Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "details": {
          "*": {
            "@(2,id)": "[&1].id",
            "qty": "[&1].qty",
            "type": "[&1].type"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

规则说明

  1. 第一层shift:遍历外层数组的每个对象(*),再遍历每个对象下的details数组(内层*)。通过@(2,id)向上两层获取当前对象的id,将id、qty、type绑定到同一索引的数组项,确保每个details子项都关联对应的父级id。
  2. 第二层shift:将嵌套的数组结构扁平化,把每个子对象直接放入顶层数组,生成独立的条目。

原规则大概率是未正确处理多层数组的索引关联,导致同属一个父对象的qty和type被合并为列表。修正后的规则通过两次shift先建立正确的对象关联,再扁平化结构,完美解决多对象输入时的拆分问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:02:48