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

请求提供JOLT规范:字段值转字段名(重复值场景)

JOLT适配重复字段值作为键的转换方案

满足你需求的JOLT规范

以下规范可生成你期望的输出结构(注意:JSON语法要求对象键必须唯一,严格解析时重复键会被后者覆盖,这是JSON本身的限制):

[
  {
    "operation": "shift",
    "spec": {
      "action": {
        "Success": "action.Success",
        "records": {
          "*": {
            "Id": {
              "@(2,SubscriptionID)": "action.records.&"
            }
          }
        },
        "type": "action.type"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "action": {
        "records": {
          "*": {
            "$": "SubscriptionID"
          }
        }
      }
    }
  }
]

规范说明

  1. Shift操作:遍历records数组内的每个元素,将SubscriptionID的值映射到以Id值为键的字段下。此时重复键会生成数组,后续操作会调整为你需要的结构。
  2. Modify操作:把每个键对应的值重新包装为{"SubscriptionID": 值}的格式,最终生成你给出的输出结构。

更合规的替代方案(推荐)

由于JSON不允许重复键,实际业务中更合理的方式是将重复键对应的值设为数组,避免解析时的覆盖问题。对应的JOLT规范如下:

[
  {
    "operation": "shift",
    "spec": {
      "action": {
        "Success": "action.Success",
        "records": {
          "*": {
            "SubscriptionID": "action.records.@(1,Id).[]"
          }
        },
        "type": "action.type"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "action": {
        "records": {
          "*": {
            "*": {
              "$": "SubscriptionID"
            }
          }
        }
      }
    }
  }
]

生成的输出为:

{
  "action": {
    "Success": true,
    "records": {
      "Test_abc": [
        {"SubscriptionID": "ID_1"},
        {"SubscriptionID": "ID_2"}
      ],
      "Test_xyz": {"SubscriptionID": "ID_3"}
    },
    "type": "update"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:35:30