求匹配total与current字段的Jolt转换规则
Jolt转换规则实现方案
需求概述
需实现以下JSON转换逻辑:
- 当输入中
data.aField.current与data.otherField.total数值相等时,输出{"status":"completed"} - 两字段数值不等时,输出
{"status":"not completed"} - 若
current或total任一字段缺失,输出{"status":"not found"}
Jolt Spec实现
[ { "operation": "default", "spec": { "data": { "aField": { "current": "MISSING" }, "otherField": { "total": "MISSING" } } } }, { "operation": "modify-overwrite-beta", "spec": { "status": "=concat('not ', if(equals(@(1,data.aField.current),@(1,data.otherField.total)),'','not '), 'completed')", "status": "=if(or(equals(@(1,data.aField.current),'MISSING'),equals(@(1,data.otherField.total),'MISSING')),'not found',@(1,status))" } }, { "operation": "remove", "spec": { "data": "" } } ]
示例验证
场景1:字段数值匹配
输入JSON:
{ "data": { "aField": { "current": 5 }, "otherField": { "total": 5 } } }
输出JSON:
{ "status": "completed" }
场景2:字段数值不匹配
输入JSON:
{ "data": { "aField": { "current": 4 }, "otherField": { "total": 5 } } }
输出JSON:
{ "status": "not completed" }
场景3:字段缺失(示例为缺失current字段)
输入JSON:
{ "data": { "otherField": { "total": 5 } } }
输出JSON:
{ "status": "not found" }
逻辑说明
- default操作:给可能缺失的
current和total字段设置默认值MISSING,用于后续判断字段是否存在 - modify-overwrite-beta操作:
- 先通过
equals判断两字段数值是否相等,拼接出对应的status值 - 再判断是否有字段为默认的
MISSING,如果有则将status设为not found
- 先通过
- remove操作:移除输入中的
data节点,只保留最终的status结果
内容的提问来源于stack exchange,提问作者Guzman Navarro Chacon
相关产品推荐
相关产品推荐

