如何使用JOLT格式转换指定JSON数据
使用JOLT实现指定JSON格式转换
输入JSON:
{"mtime": "2023-03-14T01:00:00Z","sid": "46","tsa": "9.0","tha": "7.8","hra": "85.0","tsf": null,"tss": null,"ens": "0.0","dvt": null,"vvt": "4.8","plu": "0.1","hct": "26.0"}
期望输出JSON:
{"Date": "2023-03-14 01:00:00","data": [{"code": "tsa","value": "9.0"},{"code": "tha","value": "7.8"},{"code": "hra","value": "85.0"},{"code": "tsf","value": null},{"code": "tss","value": null},{"code": "ens","value": "0.0"},{"code": "dvt","value": null},{"code": "vvt","value": "4.8"},{"code": "plu","value": "0.1"},{"code": "hct","value": "26.0"}],"stationname": "Station"}
JOLT转换规范:
[ { "operation": "modify-overwrite-beta", "spec": { "Date": "=split('T', @(1,mtime))", "Date": "=join(' ', @(1,Date))", "Date": "=split('Z', @(1,Date))[0]" } }, { "operation": "shift", "spec": { "Date": "Date", "tsa|tha|hra|tsf|tss|ens|dvt|vvt|plu|hct": { "$": "data[#2].code", "@": "data[#2].value" }, "#Station": "stationname" } }, { "operation": "sort", "spec": { "data": ["code"] } } ]
转换步骤说明
- modify-overwrite-beta 操作:专门处理时间格式转换
- 先把
mtime里的字符串按T分割成数组,再用空格拼接成带空格的时间字符串,最后去掉末尾的Z,得到目标Date格式
- 先把
- shift 操作:完成核心字段映射
- 直接把处理好的
Date字段映射到输出的Date - 匹配指定的传感器字段(tsa、tha等),把字段名作为
code、字段值作为value,批量生成data数组的元素 - 用
#Station硬编码生成固定值的stationname字段
- 直接把处理好的
- sort 操作:对
data数组按code排序,确保输出顺序和期望一致
内容的提问来源于stack exchange,提问作者BHADRAKA HERATH
相关产品推荐
相关产品推荐

