在 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]
}