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

如何使用Jolt将字符串数组每4个元素转为对象数组?

Jolt实现数组按每4元素分组转为对象数组

这个需求完全可以通过Jolt实现,核心是利用shift操作结合数组索引的数学运算(整除、取模)来完成分组和字段映射。

输入数据

{
  "test": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
  ]
}

Jolt转换规则

[
  // 第一步:将原数组元素按索引暂存到temp对象中
  {
    "operation": "shift",
    "spec": {
      "test": {
        "*": {
          "@(1,[])": {
            "$": "temp.&(0,1)"
          }
        }
      }
    }
  },
  // 第二步:按索引每4个元素为一组,分组到group对象中
  {
    "operation": "shift",
    "spec": {
      "temp": {
        "*": {
          "$": "group.${divide(#,4)}.&(0,mod(#,4))"
        }
      }
    }
  },
  // 第三步:将组内的0/1/2/3索引映射为a/b/c/d字段
  {
    "operation": "shift",
    "spec": {
      "group": {
        "*": {
          "0": "&1.a",
          "1": "&1.b",
          "2": "&1.c",
          "3": "&1.d"
        }
      }
    }
  },
  // 第四步:将group对象转为数组输出
  {
    "operation": "shift",
    "spec": {
      "group": {
        "*": ""
      }
    }
  }
]

规则解释

  1. 第一步:遍历test数组的每个元素,把元素值按原数组索引存储到temp对象中,比如temp.0=1、temp.1=2。
  2. 第二步:遍历temp的每个索引键,用divide(#,4)计算该元素所属的组(索引0-3对应组0,4-7对应组1),用mod(#,4)计算组内位置(0/1/2/3),把元素分配到group的对应组和位置里,比如group.0.0=1、group.1.0=5。
  3. 第三步:把每组内的0、1、2、3位置分别映射为a、b、c、d字段,得到group.0={"a":1,"b":2,...}的结构。
  4. 第四步:提取group对象的所有值,转为数组,得到最终结果。

转换后输出

[
  {
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4
  },
  {
    "a": 5,
    "b": 6,
    "c": 7,
    "d": 8
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:27