【问题标题】:Convert Delimiter fille to JSON format using Dataweave in Mule使用 Mule 中的 Dataweave 将分隔文件转换为 JSON 格式
【发布时间】:2021-01-28 14:19:23
【问题描述】:

我需要使用 mule 中的 dataweave 将现有的分隔符文件转换为 json 格式。

示例输入:

Name~#~ID~#~Company~#~Address
SRI~#~1~#~Infy~#~Bangalore
Rahul~#~2~#IBM~#~US
John~#~3~#~SF~#~UK

样品输出

{
Name: Sri
ID: 1
Company: Infy
Adress: Bangalore
},
{
Name: Rahul
ID: 2
Company: IBM
Adress: US

},
{
Name: John
ID: 3
Company: SF
Adress: UK
}

但我的输出低于输出

Dataweave 转换

【问题讨论】:

标签: json mule dataweave flat-file


【解决方案1】:

使用以下输入(input.txt):

Name~#~ID~#~Company~#~Address
SRI~#~1~#~Infy~#~Bangalore
Rahul~#~2~#~IBM~#~US
John~#~3~#~SF~#~UK

以及以下 DataWeave 代码:

%dw 2.0
output application/json

var payload = readUrl("classpath://input.txt","text/plain") splitBy(/\r\n/)

var header= payload[0] splitBy(/~#~/)
var data  = payload[1 to -1]
---
data map (item, index) ->
    {(item splitBy(/~#~/) map
    {   
        (header[$$]): $ 
    })}

结果是:

[
  {
    "Name": "SRI",
    "ID": "1",
    "Company": "Infy",
    "Address": "Bangalore"
  },
  {
    "Name": "Rahul",
    "ID": "2",
    "Company": "IBM",
    "Address": "US"
  },
  {
    "Name": "John",
    "ID": "3",
    "Company": "SF",
    "Address": "UK"
  }
]

我推荐一个数组作为输出

【讨论】:

  • 实际上我忘了提到我在名称字段之前也有'#'——就在标题的开头。如何删除它.. 我使用另一个 transorm 消息来做到这一点
【解决方案2】:

非常有趣的问题,您可以使用dw::core::Binaries 中的readLines 函数,然后用~#~ 拆分。请记住将您的有效负载设置为application/octet-stream mimeType,以便 dw 将其作为二进制数据处理,稍后您可以使用此 sn-p 解析它。

%dw 2.0
output application/json
import dw::core::Binaries
var lines = Binaries::readLinesWith(payload, "UTF-8")


---
lines match {
    case [x ~ xs] -> do {
        var header = x splitBy  "~#~"
        ---
        xs map ((item, index) -> {
              (item splitBy "~#~" map (column, index) -> {
                  (header[index]): column
              } )
        })
    }
}

【讨论】:

  • 我学到了另一种语法x ~ xs 用于列表的头部和尾部:D。泰马里亚诺 :)
  • 精湛的知识。点击一下就可以工作。你能帮我了解更多关于dataweave的信息吗?任何链接/文档。学习了新的关键词和语法..:) 再次感谢您
  • 你能帮忙吗——实际上我忘了提到我在名称字段之前也有“#”——就在标题的开头。如何删除它.. 我使用另一个 transorm 消息来做到这一点
猜你喜欢
  • 2016-01-09
  • 2021-02-22
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2017-05-20
  • 2016-02-04
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多