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

如何用JOLT按车主姓名合并JSON对象并将车辆转为数组?

JOLT实现同姓名车主合并及车辆字段数组化

完全可行,以下是具体实现思路和示例:

核心思路

  1. 分组聚合:先用shift操作按车主姓名作为key,将同一车主的车辆信息聚合到对应分组下
  2. 字段数组化:通过cardinality操作,确保车辆字段始终为数组类型(即使单辆车也转为数组)
  3. 结构整理:最后用shift操作把分组后的结构重新整理为数组格式

示例演示

输入JSON

[
  {"name": "张三", "car": "奔驰C200"},
  {"name": "李四", "car": "宝马3系"},
  {"name": "张三", "car": "特斯拉Model 3"},
  {"name": "王五", "car": "奥迪A4L"}
]

JOLT转换规范

[
  // 第一步:按姓名分组,聚合车辆
  {
    "operation": "shift",
    "spec": {
      "*": {
        "name": "@(1,name).name",
        "car": "@(1,name).cars[]"
      }
    }
  },
  // 第二步:确保name字段为单值,cars字段为数组(避免单辆车时是字符串)
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "name": "ONE",
        "cars": "MANY"
      }
    }
  },
  // 第三步:将分组后的对象转为数组
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

输出结果

[
  {
    "name": "张三",
    "cars": ["奔驰C200", "特斯拉Model 3"]
  },
  {
    "name": "李四",
    "cars": ["宝马3系"]
  },
  {
    "name": "王五",
    "cars": ["奥迪A4L"]
  }
]

关键说明

  • 第一步shift中,@(1,name)表示取当前层级(数组元素层)的name值作为顶层key,实现分组
  • cardinality操作的ONE确保姓名不会变成数组,MANY强制车辆字段为数组,兼容单/多车场景
  • 最后一步把分组的对象转为数组,还原预期的数组结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:25:21