使用 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 创建两个表达式并将它们组合成一个简单的数组
添加一个空对象作为行分隔符
我正在使用 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 创建两个表达式并将它们组合成一个简单的数组 添加一个空对象作为行分隔符