适配两种JSON结构:基于条件移除嵌套数组字段的JOLT过滤器
JOLT条件删除字段解决方案
需求概述
仅当service字段值为THIS_SERVICE时,移除attributes_here中的key2和key5字段,同时完整保留原JSON的层级结构,需适配两种不同的顶层JSON结构。
最终JOLT过滤器规范
[ // 完整复制原始JSON结构,保留所有字段 { "operation": "shift", "spec": { "*": "&", "responseMessage": { "*": "responseMessage.&" } } }, // 匹配条件并标记待删除字段 { "operation": "modify-overwrite-beta", "spec": { "payload|responseMessage.payload": { "elements": { "*": { "service": { "THIS_SERVICE": { "@2,attributes": { "*": { "attributes_here": { "key2": "", "key5": "" } } } } } } } } } }, // 彻底移除标记的字段 { "operation": "remove", "spec": { "payload|responseMessage.payload": { "elements": { "*": { "attributes": { "*": { "attributes_here": { "key2|key5": "" } } } } } } } } ]
各阶段说明
- Shift复制阶段:通过通配符匹配所有顶层节点,完整保留原始JSON的层级结构;同时单独处理
responseMessage内部子节点,确保两种输入结构都能被正确复制。 - Modify条件标记阶段:用
payload|responseMessage.payload同时匹配两种输入中的payload路径,仅当service值为THIS_SERVICE时,将attributes_here下的key2和key5设为空值,标记为待删除项。 - Remove清理阶段:彻底移除已标记为空的
key2和key5字段,保证输出结构符合预期。
验证效果
- 针对输入1:
payload.elements中service为THIS_SERVICE的项,其attributes_here会移除key2和key5,其余结构完全保留。 - 针对输入2:
responseMessage.payload.elements中对应项的attributes_here同样移除目标字段,顶层的status、notes等节点无变化。
内容的提问来源于stack exchange,提问作者dimitar.bonchev
相关产品推荐
相关产品推荐

