Mule-基于csv标头值将CSV解析为哈希映射的araylist

时间:2017-10-04 13:31:01

标签: java csv arraylist hashmap mule

我有一个简单的csv

TYPE,DATE,NAME SERIAL,20170808,TR NUEROUS,20160608,WB

这是我将csv转换为hashmaps的arraylist(目前正在使用索引)的流程

<set-property propertyName="Content-Type" value="text/csv" 
mimeType="application/csv" doc:name="Property"/>

  <dw:transform-message doc:name="Transform Message">
    <dw:input-payload doc:sample="sample_data/string.dwl" mimeType="application/csv"/>

      <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload map ((payload , indexOfPayload) -> {
operationType:payload[0],
issueDate:payload[1],
issueNumber:payload[2]
})]]></dw:set-payload>
         </dw:transform-message>

目前我正在使用索引,但当标题csv索引将被更改时会是什么?所以我需要根据csv头名进行解析。 e.g

operationType: payload.TYPE

怎么做?感谢

1 个答案:

答案 0 :(得分:2)

您可以使用标题列名称作为获取值的键来实现此目的。

<dw:transform-message doc:name="Transform Message">
            <dw:input-payload mimeType="application/csv"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload map ((payload , indexOfPayload) -> {
operationType:payload.TYPE,
issueDate:payload.DATE,
issueNumber:payload.NAME
})]]></dw:set-payload>
        </dw:transform-message>

根据Mule documentation

  

当header = true时,您可以按名称访问输入中的字段。例如:payload.userName。

     

当header = false时,您必须按索引访问字段,首先引用条目,然后引用字段Ex:payload [107] [2]

希望这有帮助。