DW 2.0中基于对象值匹配另一对象键合并两个对象的方案咨询
DataWeave 2.0 模板对象映射填充解决方案
直接使用mapObject结合动态取值即可实现你要的逻辑,核心代码如下:
%dw 2.0 output application/json --- // vars.template 对应你存储的模板对象A vars.template mapObject ((templateValue, templateKey) -> { (templateKey): payload[templateValue] default "" })
逻辑说明
- 遍历模板对象的所有键值对,始终保留模板的原始键作为输出对象的键
- 以模板每个键对应的值作为索引,到payload中查找对应的值
- 未匹配到值时用
default指定默认返回值,需要返回null时直接替换""为null即可
用你给出的示例输入运行上述代码,将直接得到你期望的输出结果。
实用建议
- 如果模板是嵌套结构,可以封装递归函数处理多层级的映射逻辑
- 需要对匹配到的值做格式化处理时,可在
payload[templateValue]后追加转换逻辑,例如payload[templateValue] as String default "" - 如需排除模板中的指定字段,可在
mapObject后追加filter操作过滤不需要的键
内容的提问来源于stack exchange,提问作者Shawn.Y
相关产品推荐
相关产品推荐

