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

Mule 3中基于条件从数组移除对象的DataWeave 1.0正确实现方案

在Mule 3 DataWeave 1.0中过滤指定对象的正确实现

嘿,看了你写的DataWeave代码,问题出在过滤条件的逻辑上,还有个字段名的小失误。你要移除的是profile为Aftersales_Manager且raflag为false的对象,那咱们的过滤条件应该是保留不满足这个组合条件的所有元素,而不是你原来写的逻辑。另外你代码里用了$.mule_temp_profile,但输入数据里的字段是profile,这也会导致匹配不上。

下面是修正后的正确代码,而且根据你的期望输出简化了字段映射:

%dw 1.0 
%output application/json 
--- 
payload filter !( $.profile == 'Aftersales_Manager' and $.raflag == false ) map { 
  "ldap": $.ldap, 
  "raflag": $.raflag, 
  "profile": $.profile 
}

代码说明:

  • !( $.profile == 'Aftersales_Manager' and $.raflag == false ):这个条件的意思是“不是(profile是Aftersales_Manager且raflag为false)”,正好精准排除你要移除的目标对象
  • 映射部分只保留了你期望输出里的三个字段,避免多余字段的干扰

测试用输入数据:

[{ 
  "ldap": "V00075", 
  "raflag": true, 
  "profile": "Aftersales_Manager" 
}, { 
  "ldap": "V00076", 
  "raflag": true, 
  "profile": "Aftersales_Manager" 
}, { 
  "ldap": "V00077", 
  "raflag": false, 
  "profile": "Aftersales_Manager" 
}, { 
  "ldap": "V00078", 
  "raflag": true, 
  "profile": "Worker" 
}, { 
  "ldap": "V00079", 
  "raflag": true, 
  "profile": "Manager" 
}]

运行后得到的期望输出:

[{ 
  "ldap": "V00075", 
  "raflag": true, 
  "profile": "Aftersales_Manager" 
}, { 
  "ldap": "V00076", 
  "raflag": true, 
  "profile": "Aftersales_Manager" 
}, { 
  "ldap": "V00078", 
  "raflag": true, 
  "profile": "Worker" 
}, { 
  "ldap": "V00079", 
  "raflag": true, 
  "profile": "Manager" 
}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:09:05