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

复杂Jolt转换需求:向数组元素注入非HD循环数据

Jolt 处理EDI数据:生成HD驱动的关联数组解决方案

问题场景

输入EDI结构包含1个INS-2000_loop元素,其下包含多个HD-2300_loop子元素,需生成与HD-2300_loop数量匹配的输出数组,每个数组项包含:

  • 对应HD-2300_loop的完整数据(重命名为L2300)
  • INS-2000_loop中除HD-2300_loop外的所有子数据(重命名为L2000)

示例输入

{
  "INS-2000_loop": {
    "INS": "INS001",
    "REF": "REF001",
    "DTM": "DTM001",
    "HD-2300_loop": [
      {
        "HD": "HD001",
        "CLM": "CLM001"
      },
      {
        "HD": "HD002",
        "CLM": "CLM002"
      }
    ]
  }
}

目标输出

[
  {
    "L2000": {
      "INS": "INS001",
      "REF": "REF001",
      "DTM": "DTM001"
    },
    "L2300": {
      "HD": "HD001",
      "CLM": "CLM001"
    }
  },
  {
    "L2000": {
      "INS": "INS001",
      "REF": "REF001",
      "DTM": "DTM001"
    },
    "L2300": {
      "HD": "HD002",
      "CLM": "CLM002"
    }
  }
]

最终Jolt Shift Spec

[
  {
    "operation": "shift",
    "spec": {
      "INS-2000_loop": {
        "HD-2300_loop": {
          "*": {
            // 将当前HD-2300_loop元素映射到对应数组项的L2300字段
            "@": "[&1].L2300",
            // 注入上层INS-2000_loop的非HD数据到L2000
            "@3,INS-2000_loop": {
              // 排除HD-2300_loop字段,不纳入L2000
              "HD-2300_loop": null,
              // 将其余字段映射到对应数组项的L2000下,保留原键名
              "*": "[&3].L2000.&"
            }
          }
        }
      }
    }
  }
]

关键逻辑解析

  1. @3路径注入:@3,INS-2000_loop表示从当前*(HD数组索引节点)向上回溯3层,精准定位到根节点下的INS-2000_loop,获取其完整内容用于后续处理。
  2. 排除HD子项:通过"HD-2300_loop": null规则,直接过滤掉该字段,避免冗余数据进入L2000。
  3. 数组索引匹配:[&1]和[&3]分别引用HD数组的索引,确保每个L2300和对应的L2000被映射到同一个输出数组项中。
  4. 重命名规则:通过.L2300和.L2000后缀,直接完成字段重命名需求。

Jolt &运算符速查表

语法作用说明
&引用当前字段的键名,用于保留原字段名映射,如"*": "output.&"
&n引用当前路径向上第n层的键名/索引,如在a.b.c.*节点下,&2指代c
&(n,key)引用向上第n层中指定key的节点内容,用于精准定位上层特定字段
&0等同于&,直接引用当前字段的键名

内容的提问来源于stack exchange,提问作者Abhai Raj Llewellyn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:38:26