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

请求调整JOLT中的日期格式、类型转换与字符串处理

JOLT转换规则调整解决方案

需求说明

  • 将UTC格式日期(如2024-06-16T23:54:14.711456Z)转换为yyyy-mm-dd hh:mm:ss格式
  • 将code为WEIGHT的value从字符串类型转为decimal类型
  • 提取machinename仅保留名称部分(示例按-分隔拆分,可根据实际格式调整分隔符)

输入JSON

{
  "timestamp": "2024-06-16T23:54:14.711456Z",
  "machinename": "PackagingMachine-001",
  "metrics": [
    {
      "code": "WEIGHT",
      "value": "125.5"
    },
    {
      "code": "TEMP",
      "value": "22.3"
    }
  ]
}

现有JOLT规则

[
  {
    "operation": "shift",
    "spec": {
      "timestamp": "eventTime",
      "machinename": "machineName",
      "metrics": {
        "*": {
          "code": "measurements[&1].type",
          "value": "measurements[&1].value"
        }
      }
    }
  }
]

期望输出JSON

{
  "eventTime": "2024-06-16 23:54:14",
  "machineName": "PackagingMachine",
  "measurements": [
    {
      "type": "WEIGHT",
      "value": 125.5
    },
    {
      "type": "TEMP",
      "value": "22.3"
    }
  ]
}

调整后的JOLT规则

[
  // 预处理:日期拆分、机器名提取、WEIGHT值转类型
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "timestamp": {
        "splitT": "=split('T', @(1))",
        "datePart": "@(1,splitT[0])",
        "splitDot": "=split('\\.', @(1,splitT[1]))",
        "timePart": "@(1,splitDot[0])",
        "formattedTime": "=concat(@(1,datePart), ' ', @(1,timePart))"
      },
      "machinename": "=split('-', @(1))[0]",
      "metrics": {
        "*": {
          "isWeight": "=equals(@(1,code), 'WEIGHT')",
          "value": "=toDouble(@(1))"
        }
      }
    }
  },
  // 结构整理:区分WEIGHT与其他指标的value类型
  {
    "operation": "shift",
    "spec": {
      "timestamp": {
        "formattedTime": "eventTime"
      },
      "machinename": "machineName",
      "metrics": {
        "*": {
          "code": "measurements[&1].type",
          "value": {
            "@(2,isWeight)": "measurements[&2].value",
            "*": {
              // 非WEIGHT指标转回字符串(若无需保留原类型可删除此层)
              "=toString(@(1))": "measurements[&3].value"
            }
          }
        }
      }
    }
  },
  // 清理临时标记字段
  {
    "operation": "remove",
    "spec": {
      "measurements": {
        "*": {
          "isWeight": ""
        }
      }
    }
  }
]

规则说明

  1. 日期格式转换:通过split拆分UTC日期的T和.分隔符,提取日期部分与时分秒片段,再用concat拼接成目标格式。
  2. WEIGHT值类型转换:用modify-overwrite-beta的toDouble函数转类型,结合equals标记WEIGHT指标,后续通过shift确保仅WEIGHT保留decimal类型,其他指标可按需转回字符串。
  3. machinename提取:通过split按指定分隔符(示例为-)拆分字符串,取第一个元素作为名称部分,若实际格式不同,替换分隔符即可(如.改为\\.、_直接写_)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:34:52