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

Jolt配置需求:将DataSetWriterId作为动态键并添加计数器

需求说明

从给定的JSON数据中提取DataSetWriterId的前缀部分,为Payload.Data数组内的每个Body值生成带两位递增计数器后缀的键,最终输出指定结构的JSON。

输入JSON示例
{
  "MessageType": "ua-data",
  "PublisherId": "1",
  "Messages": [
    {
      "DataSetWriterId": "key_07",
      "SequenceNumber": 2,
      "Payload": {
        "Data": [
          {
            "Type": 1,
            "Body": false
          },
          {
            "Type": 1,
            "Body": false
          },
          {
            "Type": 1,
            "Body": false
          }
        ]
      }
    }
  ]
}
期望输出JSON示例
{
  "key_01": false,
  "key_02": false,
  "key_03": false
}
实现方案(以JavaScript为例)

步骤概述

  1. 解析输入JSON为JavaScript对象
  2. 提取DataSetWriterId的前缀(如key_)
  3. 遍历Payload.Data数组,为每个元素生成带递增两位计数器的键,对应值为Body字段的值
  4. 将生成的键值对转为格式化的JSON字符串

代码实现

// 输入JSON字符串
const inputJson = `{
  "MessageType": "ua-data",
  "PublisherId": "1",
  "Messages": [
    {
      "DataSetWriterId": "key_07",
      "SequenceNumber": 2,
      "Payload": {
        "Data": [
          {
            "Type": 1,
            "Body": false
          },
          {
            "Type": 1,
            "Body": false
          },
          {
            "Type": 1,
            "Body": false
          }
        ]
      }
    }
  ]
}`;

// 解析为对象
const inputObj = JSON.parse(inputJson);

// 提取键前缀
const dataSetId = inputObj.Messages[0].DataSetWriterId;
const keyPrefix = `${dataSetId.split('_')[0]}_`;

// 构建结果对象
const result = {};
inputObj.Messages[0].Payload.Data.forEach((item, idx) => {
  const counter = String(idx + 1).padStart(2, '0');
  result[`${keyPrefix}${counter}`] = item.Body;
});

// 输出格式化后的JSON
const outputJson = JSON.stringify(result, null, 2);
console.log(outputJson);

运行上述代码后,控制台将输出符合要求的JSON结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:52:39