2017-10-04 4 views
0

J'ai tête csv simple csvmulet Parse CSV araylist de cartes de hachage basée sur des valeurs

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

Ceci est mon flux pour convertir csv à arraylist de hashmaps (actuellement à l'aide des index)

Il est actuellement que j'utilise des index, mais quoi quand les index de csv d'en-tête seront changés?
<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> 

donc j'ai besoin de faire l'analyse basée sur les noms d'en-tête csv. par exemple

operationType: payload.TYPE 

Comment faire cela? Merci

Répondre

2

Vous pouvez y parvenir en utilisant le nom de la colonne d'en-tête comme clé pour obtenir la valeur.

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

Comme par Mule documentation

Quand tête = true, vous pouvez alors accéder aux champs à l'intérieur de l'entrée où le nom. Ex: payload.userName.

Quand tête = false vous devez accéder aux champs par index, le référencement d'abord l'entrée, puis le champ, Ex: charge utile [107] [2]

Hope this helps.

+0

J'ai mis l'en-tête dans '' et ça marche! Merci beaucoup à vous – Bubosam