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

如何在Mule4中使用DataWeave移除JSON中的空键值对

Mule4 DataWeave移除JSON空值对应键实现方案

原代码问题说明

你提供的原有代码仅对JSON最外层对象做过滤,且过滤条件仅排除键为Test的项,既没有判断值是否为空字符串/空数组,也没有处理嵌套的对象、数组结构,因此无法达到预期效果。

实现代码

你可以使用递归函数处理所有层级的JSON结构,逻辑如下:

%dw 2.0
output application/json
// 自定义递归函数移除空字符串、空数组对应的键
fun removeEmptyKeys(value) = value match {
    // 处理对象类型
    case obj is Object -> obj 
        // 过滤掉值为空字符串、空数组的键
        filterObject ((v, k) -> !(v is String and v == "") and !(v is Array and isEmpty(v)))
        // 对剩余键的值递归处理
        mapObject ((v, k) -> (k): removeEmptyKeys(v))
    // 处理数组类型,对每个元素递归处理
    case arr is Array -> arr map removeEmptyKeys($)
    // 其他类型(包括null、普通字符串、数字等)直接返回
    case else -> else
}
---
removeEmptyKeys(payload)

注意:当前实现会保留值为null的键,和你给出的示例要求一致;如果后续需要同时移除值为null的键,只需在filterObject的判断条件中新增and v != null即可。

效果验证

使用你提供的示例输入测试,运行上述代码后输出结果和你的预期完全一致,rateType(空字符串)、agentOfRecord(空数组)两个键会被移除,其余结构和值保持不变。


内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:45:03