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

Mule 使用dataweave将对象列表转换为csv,mule,dataweave,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 下面是我执行上述数据编织代码时得到的输出

我正在尝试使用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 
下面是我执行上述数据编织代码时得到的输出

name,name
testName,testName2
testAddress,testAddress2
同时,我期待以下内容:(样本数据)


帮助我了解我在数据编织组件中缺少了什么

以下内容适用于我:

输入:

%dw 1.0
%output application/java
---
[{
    name: "nameInput",
    address: "addressInput"
}]
%dw 1.0 %output application/csv
---
payload
name,address
nameInput,addressInput
%dw 1.0
%output application/csv
---
flatten payload
映射:

%dw 1.0
%output application/java
---
[{
    name: "nameInput",
    address: "addressInput"
}]
%dw 1.0 %output application/csv
---
payload
name,address
nameInput,addressInput
%dw 1.0
%output application/csv
---
flatten payload
输出:

%dw 1.0
%output application/java
---
[{
    name: "nameInput",
    address: "addressInput"
}]
%dw 1.0 %output application/csv
---
payload
name,address
nameInput,addressInput
%dw 1.0
%output application/csv
---
flatten payload

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

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

映射应该类似于:

%dw 1.0
%output application/csv
---
payload map {
    name: $.name,
    address: $.address
}
这里的
map
操作为列表中的每个条目生成一个具有
名称
地址
的对象<代码>$表示迭代下的隐式变量(每个列表条目)


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

使用xpath作为求值器的拆分器应该可以实现这一点……比如:

<splitter evaluator="xpath" expression="/document/article"/>

对我来说,类似于他书中描述的@Tilo,但我必须额外添加“展平”,因为我有数组作为输入

映射:

%dw 1.0
%output application/java
---
[{
    name: "nameInput",
    address: "addressInput"
}]
%dw 1.0 %output application/csv
---
payload
name,address
nameInput,addressInput
%dw 1.0
%output application/csv
---
flatten payload
谢谢:)虽然有效,但这不是我想要的。我想在映射中指定所需的字段。