Mule中DataWeave如何替换数组对象的description字段并保留其他字段?
解决方案:保留原字段仅更新指定字段的DataWeave写法
没问题!你当前的代码之所以只返回description字段,是因为在map操作里直接创建了一个只包含description的新对象,完全丢弃了原item里的其他字段。要实现“保留所有原字段,仅替换指定字段值”的需求,DataWeave提供了两种简洁的写法,不用手动逐个映射其他字段:
方法1:使用对象扩展运算符(++)
通过++将原对象与新的键值对合并,后面的键会覆盖原对象中同名的键:
%dw 2.0 output application/java --- payload map ((item, index) -> item ++ { description: vars.descriptionValue })
方法2:直接展开原对象并覆盖字段
在新对象中先展开原item的所有字段,再单独指定要替换的字段,同样会覆盖原字段:
%dw 2.0 output application/java --- payload map ((item, index) -> { item, description: vars.descriptionValue })
效果说明
这两种写法都会输出你期望的结果:
[ { "enterprise": "Samsung", "description": "This is the var value" }, { "enterprise": "Apple", "description": "This is the var value" } ]
核心逻辑就是不要完全重建对象,而是基于原对象做增量修改,这样就能自动保留所有未指定的字段啦。
内容的提问来源于stack exchange,提问作者ozuke
相关产品推荐
相关产品推荐

