使用 DataWeave 将 CSV 转换为数组

Converting CSV to array using 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 文件?谢谢!

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

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

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

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