如何正确地在MEL中将ArrayList转换为字符串



所以我有有效载荷,它的一部分有这样的数组:

{
...
members [
John,
Robert,
Tony
]
...
}

我尝试将变量设置为:

#[payload.members joinBy(",")]

但其返回类型为java.lang.ArrayList

然而,如果对DW 1.0(输出到变量(执行相同操作:

%dw 1.0
%output application/java
---
payload.members joinBy ","

我根据需要接收类型-java.lang.String

有什么建议吗?为什么在MEL中获得与变换组件相同的结果,或者我做错了什么?(我正在努力避免使用转换组件进行这样简单的步骤(

您混淆了两种不同的语言。Mule 3.x使用MEL作为其表达式语言。这意味着#[...]形式的每个表达式都是MEL表达式。Mule 3.7+还支持Transform组件内部的DataWeave 1。这是两种不同的语言。joinBy操作是一个DataWeave操作,因此它不应在MEL表达式中工作。我不知道为什么它不只是抛出一个错误。

在MEL中,可以执行以下操作:

#[ org.apache.commons.lang.StringUtils.join(payload.members, ",") ]

大多数基本Java表达式都与MEL兼容。

请注意,在Mule 4中,唯一的表达式语言是DataWeave 2。这些表达式在#[...]中的作用与在Transform组件中的作用相同。

最新更新