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

如何使用JOLT Notation替换JSON值并完成指定代码映射

JOLT规则修改:实现data数组code字段的映射转换

现有一套JOLT转换规则,除无法将data数组中的code字段替换为输出JSON指定的名称(如tsa对应A1-T1等)外,其余转换逻辑均可正常运行。以下是修改后的规则及相关说明:

输入JSON

{
  "sid": "1",
  "poste": "MapRecord[{altitude=473.0, latitude=49.92665, poste=Libramont, longitude=5.36080}]",
  "mtime": "2023-07-12T01:00:00Z",
  "tsa": "17.2",
  "hra": "90.2",
  "tsf": "15.8",
  "tss": "21.4",
  "ens": "0.0",
  "dvt": "319.6",
  "vvt": "0.9",
  "plu": "0.0",
  "hct": "60.0"
}

目标输出JSON

{
  "Date": "2023-07-12 01:00:00",
  "stationname": "Libramont",
  "data": [
    {
      "code": "A1-T1",
      "value": "17.2"
    },
    {
      "code": "A1-ETP1",
      "value": "16.2"
    },
    {
      "code": "A1-HR1",
      "value": "90.2"
    },
    {
      "code": "A1-TSF",
      "value": "15.8"
    },
    {
      "code": "A1-P1-T1",
      "value": "21.4"
    },
    {
      "code": "A1-PY1",
      "value": "0.0"
    },
    {
      "code": "A1-DVT",
      "value": "319.6"
    },
    {
      "code": "A1-WS1",
      "value": "0.9"
    },
    {
      "code": "A1-R1",
      "value": "0.0"
    },
    {
      "code": "A1-HCT",
      "value": "60.0"
    }
  ]
}

现有JOLT规则

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "po1": "=split('poste=',@(1,poste))",
      "po2": "=lastElement(@(1,po1))",
      "po3": "=split(',',@(1,po2))",
      "stationname": "=firstElement(@(1,po3))"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "po*": ""
    }
  },
  {
    "operation": "shift",
    "spec": {
      "mtime": "Date",
      "sta*": "&",
      "sid": "&",
      "*": "data.&"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Date|stationname": "&",
      "data": {
        "*": {
          "$": "&2[#2].code",
          "@": "&2[#2].value"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "data": {
        "*": {
          "value": [
            "=notNull",
            0
          ]
        }
      },
      "DPortion1": "=substring(@(1,Date),0,10)",
      "DPortion2": "=substring(@(1,Date),11,19)",
      "Date": "=concat(@(1,DPortion1),' ',@(1,DPortion2))"
    }
  },
  { // get rid of the DPortion parameters 
    "operation": "remove",
    "spec": {
      "DPortion*": ""
    }
  }
]

修改后的JOLT规则

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "po1": "=split('poste=',@(1,poste))",
      "po2": "=lastElement(@(1,po1))",
      "po3": "=split(',',@(1,po2))",
      "stationname": "=firstElement(@(1,po3))",
      "etp": "16.2"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "po*": ""
    }
  },
  {
    "operation": "shift",
    "spec": {
      "mtime": "Date",
      "stationname": "&",
      "sid": "&",
      "tsa": "data.A1-T1",
      "hra": "data.A1-HR1",
      "tsf": "data.A1-TSF",
      "tss": "data.A1-P1-T1",
      "ens": "data.A1-PY1",
      "dvt": "data.A1-DVT",
      "vvt": "data.A1-WS1",
      "plu": "data.A1-R1",
      "hct": "data.A1-HCT",
      "etp": "data.A1-ETP1"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Date|stationname": "&",
      "data": {
        "*": {
          "$": "&2[#2].code",
          "@": "&2[#2].value"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "data": {
        "*": {
          "value": [
            "=notNull",
            0
          ]
        }
      },
      "DPortion1": "=substring(@(1,Date),0,10)",
      "DPortion2": "=substring(@(1,Date),11,19)",
      "Date": "=concat(@(1,DPortion1),' ',@(1,DPortion2))"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "DPortion*": ""
    }
  }
]

修改说明

  1. 在modify-overwrite-beta步骤中新增etp字段,对应输出中A1-ETP1的默认值16.2(输入JSON无该字段)。
  2. 调整第一个shift操作的data映射逻辑,替换原通配符*为每个输入字段的明确映射(如tsa对应data.A1-T1),确保后续生成的code字段直接使用目标名称。
  3. 保留原有所有正常逻辑,包括stationname提取、Date格式转换、值非空处理等。

内容的提问来源于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.13 12:42:10