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

使用Jolt将嵌套对象列表转换为带根项的数组

Jolt Transform:将嵌套变量对象展开为单条记录数组

需求描述

将包含嵌套variables对象的JSON数组输入,转换为每个变量对应一条记录,同时携带原分组的id(重命名为groupId)和name(重命名为groupName)的JSON数组输出。

输入示例

[
  {
    "id": 100,
    "name": "group name",
    "variables": {
      "var1": {
        "value": "val1"
      },
      "var2": {
        "value": "val2"
      }
    }
  },
  {
    "id": 101,
    "name": "group name 2",
    "variables": {
      "var1": {
        "value": "val1"
      }
    }
  }
]

输出示例

[
  {
    "groupId": 100,
    "groupName": "group name",
    "name": "var1",
    "value": "val1"
  },
  {
    "groupId": 100,
    "groupName": "group name",
    "name": "var2",
    "value": "val2"
  },
  {
    "groupId": 101,
    "groupName": "group name 2",
    "name": "var1",
    "value": "val1"
  }
]

Jolt转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "variables": {
          "*": {
            "@2,id": "groupId",
            "@2,name": "groupName",
            "$": "name",
            "value": "value"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[#2].&"
      }
    }
  }
]

转换逻辑说明

  1. 第一个shift操作:

    • 遍历原数组的每个分组元素(*),再遍历分组内variables对象的所有变量键(*)。
    • @2,id:向上回溯2级(跳过当前变量和variables层),获取分组的id值,映射为groupId。
    • @2,name:同理,获取分组的name值,映射为groupName。
    • $:取当前变量的键名(如var1),映射为name字段。
    • value:直接提取变量对象中的value值。
  2. 第二个shift操作:

    • 将第一步生成的扁平化结构重新整理为数组格式,[#2].&表示把每个变量的属性集合到对应的数组元素中,最终形成预期的多条记录数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:56:19