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

JOLT转换需求:将对象属性复制到数组元素并展开为新数组

JOLT转换规则实现数组元素属性复制

输入JSON

[
  {
    "id": "0",
    "bucket_attr1": "test1",
    "buckets": ["abc", "def", "mhf"]
  },
  {
    "id": "1",
    "bucket_attr1": "test2",
    "buckets": ["abc", "ghi"]
  }
]

期望输出JSON

[
  {
    "bucket_id": "abc",
    "bucket_attr1": "test1",
    "id": "0"
  },
  {
    "bucket_id": "def",
    "bucket_attr1": "test1",
    "id": "0"
  },
  {
    "bucket_id": "mhf",
    "bucket_attr1": "test1",
    "id": "0"
  },
  {
    "bucket_id": "abc",
    "bucket_attr2": "test2",
    "id": "1"
  },
  {
    "bucket_id": "ghi",
    "bucket_attr2": "test2",
    "id": "1"
  }
]

正确JOLT转换规则

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "buckets": {
          "*": {
            "@2,id": "[&3].id",
            "@2,bucket_attr1": "[&3].bucket_attr1",
            "@": "[&3].bucket_id"
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "bucket_attr2": "=ifElse(@(1,id) == '1', @(1,bucket_attr1), '')",
        "bucket_attr1": "=ifElse(@(1,id) == '0', @(1,bucket_attr1), '')"
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": {
        "bucket_attr1": {
          "": ""
        },
        "bucket_attr2": {
          "": ""
        }
      }
    }
  }
]

规则说明

  • Shift操作:遍历输入数组的每个对象,将buckets数组的元素逐个展开为独立对象,同时向上两级(@2)提取当前对象的id和bucket_attr1属性,将buckets元素值赋值给bucket_id。
  • Modify操作:通过ifElse判断id值,为id=1的对象生成bucket_attr2属性并赋值为原bucket_attr1的值,同时保留id=0对象的bucket_attr1。
  • Remove操作:清除空值属性,保证输出结构干净整洁。

内容的提问来源于stack exchange,提问作者Shashi Kiran GM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:03:14