You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:07