Mule4中使用DataWeave提取Payload指定字段失败的解决方法
在Mule 4中从单个JSON Payload提取指定字段并设置变量
你的表达式失效主要有两个原因,咱们一步步来解决:
1. 错误使用了map操作
你的输入Payload是单个JSON对象,而map是用来遍历数组元素的操作——对单个对象用map相当于在空集合上遍历,自然得不到结果。直接通过payload.字段名就能访问单个对象的属性,不需要遍历。
2. 字段名拼写错误
原Payload里的父文件夹字段是Parent_Folder_(末尾带有下划线),但你写的是Sample.Parent_Folder,少了下划线,这也会导致取不到对应的值。
正确的Transform Message表达式
如果要提取这两个字段输出为JSON,用下面的DataWeave代码:
%dw 2.0 output application/json --- { "name": payload.Name, "parentId": payload.Parent_Folder_ }
如果要设置为变量
你有两种选择:
- 分别设置单个变量:
- 在Set Variable组件中,变量名设为
nameVar,表达式写payload.Name - 再添加一个Set Variable组件,变量名设为
parentIdVar,表达式写payload.Parent_Folder_
- 在Set Variable组件中,变量名设为
- 设置包含两个字段的对象变量:
直接把上面的Transform表达式作为变量的值,这样变量会是一个包含name和parentId的JSON对象。
额外提醒
Mule 4的DataWeave对字段名的大小写、特殊字符(比如下划线)是严格匹配的,一定要和原Payload里的字段名完全一致,否则会返回null哦。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

