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

如何使用JOLT实现两个数组记录的笛卡尔积合并?

解决方案:JOLT实现数组笛卡尔积合并

正确的JOLT配置

[
  {
    "operation": "shift",
    "spec": {
      "connections": {
        "*": {
          "@(2,tests)": {
            "*": {
              "*": "connections[&3_&1].&",
              "@(3,*)": "connections[&3_&1].&"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "connections": {
        "*": "connections[]"
      }
    }
  }
]

配置解释

第一步:生成笛卡尔积基础结构

  • 外层遍历connections数组的每条记录(*代表数组索引)
  • 通过@(2,tests)引用上层的tests数组,再遍历tests的每条记录(内层*)
  • 对每个connection-test组合:
    • *": "connections[&3_&1].&:将当前test的所有字段映射到connection索引_test索引命名的键下,保留原字段名
    • @(3,*)": "connections[&3_&1].&:将当前connection的所有字段同步映射到同一个键下,实现字段合并
    • 这一步会生成connections["0_0"]、connections["0_1"]这类键值对,每个键对应一组connection-test的合并结果

第二步:整理为连续数组

  • 遍历第一步生成的所有复合键(*),将对应的值依次放入connections[]
  • JOLT会自动将这些值转换为连续的数组元素,得到最终的笛卡尔积结果

原配置失效原因

你之前的配置直接将整个tests数组赋值给每个connection,没有对tests的元素进行拆分遍历,因此无法生成一对一的组合记录。必须通过嵌套遍历两个数组的元素,才能实现笛卡尔积效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:15:23