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

如何使用JOLT实现数组元素与另一完整数组的分组转换?

需求与JOLT解决方案

输入JSON

[
  {
    "objects": ["obj1","obj2","obj3","obj4","obj5"]
  },
  {
    "types": ["kpi1","kpi2","kpi3","kpi4"]
  }
]

目标输出JSON

{
 "new":[
   { "obj":"obj1","types": ["kpi1","kpi2","kpi3","kpi4"] },
   { "obj":"obj2","types": ["kpi1","kpi2","kpi3","kpi4"] },
   { "obj":"obj3","types": ["kpi1","kpi2","kpi3","kpi4"] },
   { "obj":"obj4","types": ["kpi1","kpi2","kpi3","kpi4"] },
   { "obj":"obj5","types": ["kpi1","kpi2","kpi3","kpi4"] }        
 ]
}

原错误JOLT规格及输出

错误JOLT

{
  "operation": "shift",
  "spec": {
    "*": {
      "objects": {
        "*": "new[].obj"
      },
      "types": {
        "@": "new[].&"
      }
    }
  }
}

错误输出

{
  "new" : [ {
    "obj" : "obj1"
  }, {
    "obj" : "obj2"
  }, {
    "obj" : "obj3"
  }, {
    "obj" : "obj4"
  }, {
    "obj" : "obj5"
  }, {
    "types" : [ "kpi1", "kpi2", "kpi3", "kpi4" ]
  } ]
}

正确JOLT转换方案

[
  {
    "operation": "shift",
    "spec": {
      "0": {
        "objects": {
          "*": {
            "@": "new[&1].obj",
            "@(2,1.types)": "new[&1].types"
          }
        }
      }
    }
  }
]

方案说明

  • 通过shift操作定位到输入数组中包含objects的第一个元素(索引为0)
  • 遍历objects数组时,用&1获取当前元素的索引,保证每个obj对应new数组的同一位置
  • 利用路径引用@(2,1.types),从当前位置向上跳转2层到根数组,取出第二个元素(索引为1)的types数组,将其赋值给当前new数组位置的types字段,实现每个对象都携带完整的types数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:12