在 mule 中读取文件并使用 dataweave 进行解析
reading a file in mule and parsing with dataweave
我正在使用 Mule 4.4 并尝试读取一个文件,然后使用 Dataweave 将其转换为 JSON。
这是文件(它没有 headers ),文件的最后一行是空白的
abc|Milk|3.9|
lmn|Butter|5.5|
xyz|Bread|1.6|
在读取文件时将 mime 类型设置为 application/csv(尽管它的竖线分隔),这会有问题吗?
我遇到的问题是,我想将文件内容转换为 json,如下所示:
[
{
"id": "abc",
"product": "Milk",
"price": 3.9
},
{
"id": "lmn",
"product": "Butter",
"price": 5.5
},
etc
]
但是它显示如下:(第一行重复)
[
{
"id": {
"abc|Milk|3.9|": "lmn|Butter|5.5|"
}
},
{
"id": {
"abc|Milk|3.9|": "xyz|Bread|1.6|"
}
}
]
我认为这是因为 mule 假设第一行包含 header 。
这是我的数据编织:
%dw 2.0
output application/json
---
payload map (value,index)->
{
id:value
}
它以这种方式显示是因为您将其设置为将第一行视为您的 header 行。您需要将 reader 的 header
值设置为 false,以便它了解第一行实际上不是 header.
除此之外,您还需要将分隔符设置为管道字符。
例如,如果您将其作为文本读入并仅使用 dataweave 对其进行处理,则它看起来像:
%dw 2.0
output application/json
---
read(payload, "applicatin/csv", {"header": false, "separator": "|" }) map (
{
id: $[0],
product: $[1],
price: $[2]
}
)
请按以下方式尝试。
%dw 2.0
input payload application/csv separator="|", header = false
output application/json
---
payload map (value,index)->
{
id:value[0],
product: value[1],
price: value[2]
}
我正在使用 Mule 4.4 并尝试读取一个文件,然后使用 Dataweave 将其转换为 JSON。 这是文件(它没有 headers ),文件的最后一行是空白的
abc|Milk|3.9|
lmn|Butter|5.5|
xyz|Bread|1.6|
在读取文件时将 mime 类型设置为 application/csv(尽管它的竖线分隔),这会有问题吗?
我遇到的问题是,我想将文件内容转换为 json,如下所示:
[
{
"id": "abc",
"product": "Milk",
"price": 3.9
},
{
"id": "lmn",
"product": "Butter",
"price": 5.5
},
etc
]
但是它显示如下:(第一行重复)
[
{
"id": {
"abc|Milk|3.9|": "lmn|Butter|5.5|"
}
},
{
"id": {
"abc|Milk|3.9|": "xyz|Bread|1.6|"
}
}
]
我认为这是因为 mule 假设第一行包含 header 。 这是我的数据编织:
%dw 2.0
output application/json
---
payload map (value,index)->
{
id:value
}
它以这种方式显示是因为您将其设置为将第一行视为您的 header 行。您需要将 reader 的 header
值设置为 false,以便它了解第一行实际上不是 header.
除此之外,您还需要将分隔符设置为管道字符。
例如,如果您将其作为文本读入并仅使用 dataweave 对其进行处理,则它看起来像:
%dw 2.0
output application/json
---
read(payload, "applicatin/csv", {"header": false, "separator": "|" }) map (
{
id: $[0],
product: $[1],
price: $[2]
}
)
请按以下方式尝试。
%dw 2.0
input payload application/csv separator="|", header = false
output application/json
---
payload map (value,index)->
{
id:value[0],
product: value[1],
price: value[2]
}