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

请求编写Jolt转换规则:动态键值转code/值并将ts转为CET时间

Jolt转换实现方案

输入JSON

[
  {
    "x1": 29.684,
    "tz_offset": 3600,
    "x2": 29.957,
    "x3": -0.001,
    "x4": 0.041,
    "ts": 1727870442,
    "machine_name": "SL Station"
  }
]

期望输出JSON

{
  "Date": "2024-10-02 12:00:42",
  "data": [
    {
      "code": "x1",
      "value": 29.684
    },
    {
      "code": "x2",
      "value": 29.957
    },
    {
      "code": "x3",
      "value": -0.001
    },
    {
      "code": "x4",
      "value": 0.041
    }
  ],
  "machinename": "SL Station"
}

Jolt转换规则

[
  // 提取数组第一个对象作为根节点
  {
    "operation": "shift",
    "spec": {
      "0": ""
    }
  },
  // 转换动态键值对结构,处理固定字段
  {
    "operation": "shift",
    "spec": {
      "machine_name": "machinename",
      "ts": "ts",
      "tz_offset": "tz_offset",
      // 匹配所有数字结尾的动态键(如x1、y2等)
      "*[0-9]": {
        "$": "data[#2].code",
        "@": "data[#2].value"
      }
    }
  },
  // 生成CET格式日期字符串
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Date": "=formatTimestamp('yyyy-MM-dd HH:mm:ss', @(1,ts), @(1,tz_offset))"
    }
  },
  // 清理临时字段
  {
    "operation": "remove",
    "spec": {
      "ts": "",
      "tz_offset": ""
    }
  }
]

规则说明

  • 第一步shift:将输入数组的首个元素提取为后续处理的根对象;
  • 第二步shift:重命名machine_name为machinename,暂存ts和tz_offset用于日期转换,同时把所有数字结尾的动态键转换为code/value结构存入data数组;
  • 第三步modify:调用Jolt内置的formatTimestamp函数,结合时间戳与时区偏移量生成指定格式的日期字符串;
  • 第四步remove:删除临时保留的ts和tz_offset字段,得到最终输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:29:59