Mulesoft将多个JSON/XML转换为CSV
我对在Mulesoft中将JSON转换为CSV完全是新手。目前我需要将嵌套的JSON转换成CSV,我的CSV应该是这样的,我的JSON应该是这样的Mulesoft将多个JSON/XML转换为CSV,mule,dataweave,mulesoft,Mule,Dataweave,Mulesoft,我对在Mulesoft中将JSON转换为CSV完全是新手。目前我需要将嵌套的JSON转换成CSV,我的CSV应该是这样的,我的JSON应该是这样的 { "Invoice": [ { "Invoice Number*": "", "Supplier Name": "", "Supplier Number": "", "Status": "", "Invoice Date*": "" } ], "Invoice
{
"Invoice": [
{
"Invoice Number*": "",
"Supplier Name": "",
"Supplier Number": "",
"Status": "",
"Invoice Date*": ""
}
],
"Invoice Line": [
{
"Invoice Number*": "",
"Supplier Name": "",
"Supplier Number": "",
"Line Number": "",
"Description*": "",
"Supplier Part Number": "",
"Auxiliary Part Number": "",
"Price*": "",
"Quantity": "",
"Bulk Price": "",
"Bulk Price Qty": ""
}
],
"Invoice Tax Line": [
{
"Invoice Number*": "",
"Invoice Line Number": "",
"Invoice Charge Number": "",
"Line Number": "",
"Tax Amount": "",
"Tax Rate": "",
"Tax Code": "",
"Tax Rate Type": ""
}
]
}
我所知道的CSV只有一个标题。对于我来说,将这个复杂的JSON映射到CSV(将显示不同的标题)的最佳方式是什么?您可以这样做:
%dw 2.0
output application/csv header=false
---
flatten (
[
{"Invoice Number":"Invoice Number",
"Supplier Name": "Supplier Name",
"Supplier Number" :"Supplier Number",
"Status" : "Status",
"Invoice Date*" : "Invoice Date*"
},
{
"Invoice Number":"Invoice Number*",
"Supplier Name":"Supplier Name",
"Supplier Number":"Supplier Number",
"Status":"Status",
"Invoice Date*":"Invoice Date*"
},
payload.Invoice map {
"Invoice Number":$."Invoice Number*",
"Supplier Name":$."Supplier Name",
"Supplier Number":$."Supplier Number",
"Status":$.Status,
"Invoice Date*":$."Invoice Date*"
},
payload."Invoice Line" map {
"Invoice Number": $."Invoice Number*",
"Supplier Name":$."Supplier Name",
...
}
,
payload."Invoice Tax Line" map {
"Invoice Number":$."Invoice Number*",
...
}
]
)
您可以这样做:
%dw 2.0
output application/csv header=false
---
flatten (
[
{"Invoice Number":"Invoice Number",
"Supplier Name": "Supplier Name",
"Supplier Number" :"Supplier Number",
"Status" : "Status",
"Invoice Date*" : "Invoice Date*"
},
{
"Invoice Number":"Invoice Number*",
"Supplier Name":"Supplier Name",
"Supplier Number":"Supplier Number",
"Status":"Status",
"Invoice Date*":"Invoice Date*"
},
payload.Invoice map {
"Invoice Number":$."Invoice Number*",
"Supplier Name":$."Supplier Name",
"Supplier Number":$."Supplier Number",
"Status":$.Status,
"Invoice Date*":$."Invoice Date*"
},
payload."Invoice Line" map {
"Invoice Number": $."Invoice Number*",
"Supplier Name":$."Supplier Name",
...
}
,
payload."Invoice Tax Line" map {
"Invoice Number":$."Invoice Number*",
...
}
]
)
CSV视图图像CSV视图图像HI@aled,感谢您的回答!你能稍微解释一下这段代码中发生了什么吗?DataWeave中的CSV支持意味着有一个可选的标题行和具有相同结构的其余行。我有点滥用它,用手工创建每一行。对于DataWeave,没有标题。因为项目是一个数组,它的映射可以生成一个对象数组,所以我们需要使用flatte()函数输出一个数组,每个对象代表一行输出。您好@aled,谢谢您的回答!你能稍微解释一下这段代码中发生了什么吗?DataWeave中的CSV支持意味着有一个可选的标题行和具有相同结构的其余行。我有点滥用它,用手工创建每一行。对于DataWeave,没有标题。因为项目是一个数组,它的映射可以生成一个对象数组,所以我们需要使用flatte()函数输出一个数组,每个对象代表一行输出。