在mule 4中需要有关管道分隔文本文件的帮助到json

时间:2018-06-17 05:12:12

标签: mule

从文本文件输入:

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中尝试了下面的代码片段,但我在运行时遇到了异常。

<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>

消息:&#34;您调用了函数&#39; map&#39;使用以下参数:1:字符串(&#34; ID | ACTION | IID | SPK | DSI | OLID | NLD ...)2:函数(($:Any,$$:Any) - &gt; ???)

但它需要这些类型的参数:1:数组2:函数

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

追踪:在地图(第5行,第3列)的主要地方(行:5,列:11)&#34;评估表达式:&#34;%dw 2.0输出应用程序/ json indent = true输入有效负载文本/ csv

1 个答案:

答案 0 :(得分:1)

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

中进行了描述