写入CSV obejct到数组Mulesoft



我有这个输出,我正在尝试更改YYYY-MM-DD的数据格式,我想使用组件File write将这个对象写入CSV。

%dw 2.0
output application/json
---
{
"id": "15",
"key": "DEMO-123",
"first": {
"date": "2022-02-08T14:40:35.935+0100" as
DateTime {format: "yyyy-MM-dd'T'HH:mm:ss.sssxx"} as String {format: "yyyy-MM-dd"},
"demotype": {
"firstname": "Task",
"opinion": "demo input"
},
"demo": {
"name": "Tree"
},
"start": "2022-02-08T07:23:53.054+0100",
"end": "2022-02-08T14:40:35.935+0100",
"status": {
"name": "good"
}
"demo2": [
{
"kiss": [
"demo1"
]
}
}

我试着做这样的地图:

<ee:transform doc:name="Transform Message">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/csv quoteValues=true, separator=";", header=true
---
flatten (
[
"id": "id",
"key": "key"
]
)]]></ee:set-payload>
</ee:message>
</ee:transform>
<file:write doc:name="Write" config-ref="File_Config" path="F:user/demo.csv"/>

但我得到了在CSV中只有标题id和密钥没有值。但如果我尝试使用map,就会出现错误,我需要将此对象转换为数组,然后将其写入CSV。

为CSV转换生成"input"的第一个脚本无效,日期-时间模式也无效。我修复了它。我还将输出设置为application/java,以便在下一次转换中更高效:

%dw 2.0
output application/java
---
{
"id": "15",
"key": "DEMO-123",
"first": {
"date": "2022-02-08T14:40:35.935+0100" as
DateTime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSxx"} as String {format: "yyyy-MM-dd"},
"demotype": {
"firstname": "Task",
"opinion": "demo input"
},
"demo": {
"name": "Tree"
},
"start": "2022-02-08T07:23:53.054+0100",
"end": "2022-02-08T14:40:35.935+0100",
"status": {
"name": "good"
},
"demo2": [
{
"kiss": [
"demo1"
]
}
]
}
}

要生成CSV输出,输入必须是一个对象数组,其中每个对象代表CSV的一个记录或行。由于您的输入显然是一个单独的对象,所以您可以将转换括在数组括号之间,以输出一个单独项目的数组。您可以使用以下示例作为基础来完成所需的转换。请注意,demo2包含一个数组,该数组包含一个具有另一个数组的对象。您不能只将其输出到CSV字段。如果你想这样做,首先把它转换成一个字符串。例如,如果需要,可以使用reduce((函数。

%dw 2.0
output application/csv quoteValues=true, separator=";", header=true
---
[
{
id: payload.id,
key: payload.key,
date: payload.first.date,
start: payload.first.start
}
]

输出:

id;key;date;start
"15";"DEMO-123";"2022-02-08";"2022-02-08T07:23:53.054+0100"

请注意,在一个简单数组中,flawn((不会执行任何操作。如果您试图使用它来"展开"嵌套的对象/数组,请注意它并不能做到这一点。

相关内容

  • 没有找到相关文章

最新更新