如何用Jolt避免可选字段缺失时生成**及移除空对象
Jolt 转换解决方案
完整 Jolt 转换规则
[ { "operation": "modify-overwrite-beta", "spec": { "name": "=concat('*', @(1,name), '*')", "addressLine1": "=concat('*', @(1,addressLine1), '*')", "addressLine2": "=concat('*', @(1,addressLine2), '*')" } }, { "operation": "remove", "spec": { "SecondaryRatings": "" } }, { "operation": "shift", "spec": { "name": "name", "addressLine1": "addressLine1", "addressLine2": "addressLine2", "postalCode": "postalCode", "tour": "tour", "*": "&" } } ]
规则说明
- 字段值包裹处理:
modify-overwrite-beta操作配合concat函数,仅当原字段存在时,才会将其值用*包裹。若原字段缺失,该操作不会生成对应字段,彻底避免空的**问题。 - 空对象移除:
remove操作直接删除SecondaryRatings字段,无论原数据中该字段是否为空,缺失时也不会产生影响。 - 原生字段保留:
shift操作明确保留postalCode和tour的原始值,"*": "&"可保留其他未指定的字段,按需调整即可。
示例验证
输入 JSON:
{ "name": "John Doe", "postalCode": "12345", "tour": "City Tour", "SecondaryRatings": {} }
转换后输出:
{ "name": "*John Doe*", "postalCode": "12345", "tour": "City Tour" }
若输入缺失 addressLine1 和 addressLine2,输出中不会出现这两个字段,完全符合需求。
内容的提问来源于stack exchange,提问作者Rakesh GR
相关产品推荐
相关产品推荐

