如何用JOLT实现带条件判断与字符串拼接的JSON转换?
用JOLT实现带if-else逻辑的JSON转换
原始输入JSON
[ { "id": 0, "error_code": 603, "error_desc": "Some ads error occurs: URL needed.", "taskId": 630 }, { "id": 36154, "taskId": 631 } ]
目标输出JSON
[ { "id": 0, "taskStatus": "ERROR", "errorMessage": "603|Some ads error occurs: URL needed.", "taskId": 630 }, { "id": 36154, "taskStatus": "SUCCESS", "errorMessage": null, "taskId": 631 } ]
实现的JOLT转换规范
[ { "operation": "shift", "spec": { "*": { "id": "[&1].id", "taskId": "[&1].taskId", "id": { "0": { "#ERROR": "[&2].taskStatus", "@(2,error_code)": "[&2].errorMessage", "@(2,error_desc)": "[&2].errorMessage" }, "*": { "#SUCCESS": "[&2].taskStatus", "#null": "[&2].errorMessage" } } } } }, { "operation": "modify-overwrite-beta", "spec": { "*": { "errorMessage": "=join('|',@(1,errorMessage))" } } } ]
转换逻辑说明
- Shift阶段:
- 先保留原始的
id和taskId字段到目标结构中。 - 通过嵌套匹配
id的值:- 当
id=0时,将taskStatus设为ERROR,同时提取error_code和error_desc暂存到errorMessage数组中。 - 当
id为其他值时,将taskStatus设为SUCCESS,errorMessage设为null。
- 当
- 先保留原始的
- Modify阶段:
- 对
errorMessage执行拼接操作,把数组形式的error_code和error_desc用|连接成字符串;如果是null则保持原值不变。
- 对
内容的提问来源于stack exchange,提问作者fujidaon
相关产品推荐
相关产品推荐

