使用dataweave将对象列表转换为csv

cla*_*are 2 mule dataweave

我试图使用dataweave中的以下代码将对象列表转换为csv:

%dw 1.0
%type company = :object {class: "java.util.ArrayList"}
%input payload application/java
%output application/csv
---
{
    name: payload.name,
    address: payload.address
} as :company 
Run Code Online (Sandbox Code Playgroud)

以下是我执行上述数据编织代码时得到的输出.

name,name
testName,testName2
testAddress,testAddress2
Run Code Online (Sandbox Code Playgroud)

我期待以下内容:(样本数据)

name,address
testName,testAddress
testName2,testAddress2
Run Code Online (Sandbox Code Playgroud)

帮助我理解数据编织组件中缺少的内容

Sho*_*oki 5

一般而言,在使用DataWeave时,您使用规范表示来描述输出,该规范表示或多或少是其他数据格式的超集.

要生成CSV输出,您需要生成一个对象数组.
这些对象中的每一个都代表一个CSV行.
DataWeave中的对象是键值对的集合

映射应该是这样的:

%dw 1.0
%output application/csv
---
payload map {
    name: $.name,
    address: $.address
}
Run Code Online (Sandbox Code Playgroud)

map这里操作与生成对象name,并address在列表中的每个条目.$表示迭代下的隐式变量(每个列表条目).

注意:该%input payload application/java指令不是必需的,因为输入的内容类型(JSON,XML,CSV等)在设置时从mule消息中获取,如果不存在则默认为java.