我有這個輸出,我正在嘗試更改 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。
uj5u.com熱心網友回復:
您為轉換為 CSV 生成“輸入”的第一個腳本無效,并且日期時間模式無效。我修好了它。我還將輸出設定為 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"
請注意, flatten() 不會在簡單陣列中執行任何操作。如果您嘗試使用它來“扁平化”嵌套物件/陣列,請注意它不會那樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447636.html
