【问题标题】:Need help on pipe delimited text file to json in mule 4在 mule 4 中需要管道分隔文本文件到 json 的帮助
【发布时间】:2018-06-17 05:12:11
【问题描述】:

从文本文件输入:

ID|ACTION|IID|SPK|DSI|OLID|NLD
1 |  M   | 1 | 1 | 1 | 1  | 1

预期输出:

{
 "source": "PM",
 "Timestamp": "4/10/2018 11:44:55 AM",

     "tes":{
         "id": 1,
         "ac": "M",
         "test": "1",
         "key": "1",
         "id": "1",
         "nid": "1"
     }
 }

我在 dataweave 中尝试了下面的代码 sn-p,但在运行时出现异常。

<ee:transform doc:name="Transform Message" doc:id="2a7de32c-1b84-4419-826f-8099ce1dc241" >
             <ee:message >
                 <ee:set-payload ><![CDATA[%dw 2.0
 output application/json
 input payload text/csv
 ---
 payload map{
     source:"PM",
     "Timestamp": now() as String {format: "MM/dd/YYYY hh:mm:ss a"},
     "tes":{
     "id":$.ID,
     "action":$.ACTION,
     "IID":$.IID,
     "SPK":$.SPK,
     "DSI":$.DSI,
     "OLID":$.OLID,
     "NID":$.NLD
     }
     }
 ]]></ee:set-payload>
             </ee:message>
         </ee:transform>

消息:“您使用以下参数调用函数'map':1:字符串(“ID|ACTION|IID|SPK|DSI|OLID|NLD...)2:函数(($:Any,$$ :Any) -> ???)

但它需要以下类型的参数:1:数组 2:函数

5|有效载荷图{ | ... 11| }

Trace: at map (line: 5, column: 3) at main (line: 5, column: 11)” 评估表达式:“%dw 2.0 output application/json indent = true input payload text/csv

【问题讨论】:

  • 即使运行项目时它会显示编译时错误,它也可以正常工作。但它填充空值。如果我将文件分隔符更改为 comma(,) 而不是 pipe(|) 它工作正常。不知何故需要更改默认文件分隔符。在 3.9 中,以下设置有效,但不知道在 mule 4 -有效载荷>

标签: mule


【解决方案1】:

在 Mule 中,DataWeave 指令输入被忽略,因此设置输入 mime 类型没有用处。您也不能像在 Mule 3 中那样设置阅读器属性。 在 Mule 4 中,您应该在消息源中设置 mime 类型和阅读器属性,如文档页面中所述:https://docs.mulesoft.com/mule4-user-guide/v/4.1/dataweave-formats#reader_writer_properties 然后,您可以将 CSV 格式的分隔符读取器属性设置为管道。其他阅读器属性在https://docs.mulesoft.com/mule4-user-guide/v/4.1/dataweave-formats#reader-properties-for-csv

【讨论】:

  • 这并不完全正确。您可以将输入元数据设置为以竖线分隔的 csv。
  • 元数据在设计时使用。需要为执行时间设置读取器属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多