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

如何通过单个JOLT转换同时展开dimensions和metrics数组并添加标识字段?

单个JOLT转换实现双数组合并与字段添加

需求描述

需要展开JSON中的dimensions和metrics两个数组:为dimensions数组的每个对象添加metadata_object="dimensions"字段,为metrics数组的每个对象添加metadata_object="metrics"字段,最终将两个数组的结果合并为一个数组。

源JSON

{
  "dimensions": [
    {
      "apiName": "achievementId",
      "uiName": "Achievement ID"
    },
    {
      "apiName": "adFormat",
      "uiName": "Ad format",
      "category": "Publisher"
    }
  ],
  "metrics": [
    {
      "apiName": "active1DayUsers",
      "uiName": "1-day active users"
    },
    {
      "apiName": "active28DayUsers",
      "uiName": "28-day active users"
    }
  ],
  "name": "properties/317728157/metadata"
}

预期结果

[
   {
      "apiName":"achievementId",
      "uiName":"Achievement ID",
      "metadata_object":"dimensions"
   },
   {
      "apiName":"adFormat",
      "uiName":"Ad format",
      "category":"Publisher",
      "metadata_object":"dimensions"
   },
   {
      "apiName":"active1DayUsers",
      "uiName":"1-day active users",
      "metadata_object":"metrics"
   },
   {
      "apiName":"active28DayUsers",
      "uiName":"28-day active users",
      "metadata_object":"metrics"
   }
]

现有分步配置

目前已能通过以下分步JOLT配置实现单个数组的转换:

[
  {
    "operation": "shift",
    "spec": {
      "dimensions": {
        "*": {
          "*": "[&1].&"
        }
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "*": {
        "metadata_object": "dimensions"
      }
    }
  }
]

解决方案

可以通过单个shift操作完成所有转换,无需拆分步骤。核心思路是在shift阶段同时处理两个数组,为每个对象注入对应的metadata_object字段,并自动合并到同一个输出数组中。

最终JOLT配置如下:

[
  {
    "operation": "shift",
    "spec": {
      "dimensions": {
        "*": {
          // 复制当前对象的所有字段
          "*": "[#2].&",
          // 注入metadata_object字段,值为外层键名dimensions
          "$1": "[#2].metadata_object"
        }
      },
      "metrics": {
        "*": {
          // 复制当前对象的所有字段
          "*": "[#2].&",
          // 注入metadata_object字段,值为外层键名metrics
          "$1": "[#2].metadata_object"
        }
      }
    }
  }
]

配置说明

  • #2是JOLT的层级引用:对于dimensions数组内的元素,#2指向元素在数组中的索引(从0开始);metrics数组的元素会自动接在dimensions元素之后,完成数组合并。
  • "$1"直接引用外层的键名(dimensions或metrics)作为metadata_object的字段值,避免硬编码。
  • 源JSON中的name字段会被自动忽略,因为配置中未对其做映射处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:47:08