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

如何编写Jolt Spec实现指定JSON到键值对格式JSON的转换?

Jolt转换规则实现方案

输入JSON

{
  "Date": "6/3/2023 17:38",
  "Volt": 7,
  "WS1": 0,
  "WS2": 0,
  "HR1": 32.65,
  "T1": 20.35,
  "PY1": 7,
  "R1": 0
}

目标输出JSON

{
  "Date": "2023-03-06 17:38:",
  "data": [
    {
      "code": "Volt",
      "value": "7.0"
    },
    {
      "code": "WS1",
      "value": "0.0"
    },
    {
      "code": "WS2",
      "value": "0.0"
    },
    {
      "code": "HR1",
      "value": "32.65"
    },
    {
      "code": "T1",
      "value": "20.35"
    },
    {
      "code": "PY1",
      "value": "7.0"
    },
    {
      "code": "R1",
      "value": "0.0"
    }
  ]
}

实现转换的Jolt Spec

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "Date": "=formatDate('yyyy-MM-dd HH:mm:', 'M/d/yyyy HH:mm')",
      "Volt": "=toString(@(1,Volt))",
      "WS1": "=toString(@(1,WS1))",
      "WS2": "=toString(@(1,WS2))",
      "HR1": "=toString(@(1,HR1))",
      "T1": "=toString(@(1,T1))",
      "PY1": "=toString(@(1,PY1))",
      "R1": "=toString(@(1,R1))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Date": "Date",
      "*": {
        "$": "data[#2].code",
        "@": "data[#2].value"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "data": {
        "*": {
          "value": "=concat(@(1,value), @(1,value) =~ '^\\d+$' ? '.0' : '')"
        }
      }
    }
  }
]

规则说明

  1. 第一步(modify-overwrite-beta):完成日期格式转换,把M/d/yyyy HH:mm格式转为yyyy-MM-dd HH:mm:;同时将所有数值字段转为字符串类型。
  2. 第二步(shift):保留原Date字段,将其余所有字段映射到data数组中,每个字段对应一个对象——用字段名作为code,字段值作为value。
  3. 第三步(modify-overwrite-beta):补全data数组中value的格式,如果是纯整数形式的字符串(比如"7"),自动补为"7.0",小数形式则保持原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:50:23