如何在DataWeave中合并流变量键值并按指定格式输出(忽略空值)
解决DataWeave合并对象并处理空值与键重命名的问题
我来帮你搞定这个需求!核心思路是过滤空值字段、重命名键为带data前缀的格式,最后和初始对象合并。下面是具体的DataWeave代码和步骤解释:
完整DataWeave代码
%dw 2.0 output application/json var initialObj = {"abc":"1", "xyz":"8"} var fvTest = {"Req": {"animal": "dog", "plant": "basil","test":""}} // 模拟流变量数据 --- initialObj ++ (fvTest.Req filterObject ((value, key) -> value != "") // 过滤掉空值字段 mapObject ((value, key) -> ("data." ++ key): value) // 将键重命名为data.xxx格式 )
代码分步解释
- 过滤空值:使用
filterObject函数遍历fvTest.Req的所有键值对,只保留值不为空字符串的条目,自动排除了test:""这个无效字段。 - 重命名键:通过
mapObject把每个保留的键(比如animal)拼接成data.animal的形式,对应的值保持不变。 - 合并对象:用
++操作符将初始对象initialObj和处理后的Req数据合并,最终生成你需要的结构。
实际场景调整
如果是在Mule应用中使用流变量,需要把模拟的fvTest替换为vars.fvTest,代码调整如下:
%dw 2.0 output application/json var initialObj = {"abc":"1", "xyz":"8"} --- initialObj ++ (vars.fvTest.Req filterObject ((value, key) -> value != "") mapObject ((value, key) -> ("data." ++ key): value) )
内容的提问来源于stack exchange,提问作者Chetan
相关产品推荐
相关产品推荐

