使用DataWeave将CSV转换为数组

时间:2015-11-30 22:04:14

标签: mule dataweave

我使用Mule Requester加载CSV文件。加载文件后,有效负载是一个字节数组,我将其存储在流变量mycsv中。我一直有例外。

org.mule.api.MessagingException: Exception while executing: 
    NetIds: flowVars.mycsv map $."My Column Name"   
                        ^
Cannot coerce a :binary to a :array (com.mulesoft.weave.mule.exception.WeaveExecutionException). Message payload is of type: byte[]

这是我的DataWeave代码:

%dw 1.0
%output application/java
---
{
    Values: flowVars.mycsv map $."My Column Name"
}

之前的流元素是choice,因此我在其上设置元数据以输出到具有正确名称的FlowVar并引用样本CSV文件,因此DataWeave的变量类型为List<Csv>

如何阅读CSV?谢谢!

2 个答案:

答案 0 :(得分:1)

这是因为它不知道flowVar的mimeType,因为它没有设置。在dataweave转换器之前尝试这个:

<set-variable value="#[flowVars.mycsv]" variableName="mycsv" mimeType="application/csv" doc:name="Variable" />

或在您第一次阅读csv时设置mimeType。

答案 1 :(得分:0)

这是我第一次要求将两种不同的格式放入一个csv文件中。为了得到预期的结果,我更喜欢使用这个技巧: 使用flatten创建两个表达式并将它们组合成一个简单的数组 添加空对象作为行分隔符