如何在MEL中正确实现ArrayList到String的类型转换
MEL与DataWeave 1.0中joinBy操作返回类型差异问题解答
差异原因
- DataWeave 1.0内置的
joinBy是专门针对数组的拼接操作符,输入为字符串数组、分隔符时,会直接输出拼接后的字符串,声明%output application/java时返回的就是标准java.lang.String类型。 - MEL中你使用的
#[payload.members joinBy(",")]属于语法误用:MEL没有将joinBy识别为数组拼接函数,而是将表达式解析为对members数组内所有元素执行joinBy(",")的投影操作,因此返回结果还是java.lang.ArrayList类型。
MEL实现字符串拼接方案
不需要额外引入Transform组件,直接在MEL中调用Java原生工具方法即可实现相同效果:
- JDK 8及以上环境,直接用JDK内置的
String.join静态方法:
#[String.join(',', payload.members)]
该表达式会直接返回拼接完成的java.lang.String类型结果。
2. 低版本JDK环境,可以使用Mule默认内置依赖的commons-lang包的StringUtils工具类:
#[org.apache.commons.lang.StringUtils.join(payload.members, ',')]
内容的提问来源于stack exchange,提问作者Gorodeckij Dimitrij
相关产品推荐
相关产品推荐

