2016-12-16 59 views
-1

我使用的騾子3.8.1,並有這店的開業時間將作爲如何將CSV字段映射到JSON列表?

Group Name,Group ID,Store ID,Store Name,Mon opening time,Tues opening time,Wed opening time,Thurs opening time,Fri opening time,Sat opening time,Sun opening time,Mon closing time,Tues closing time,Wed closing time,Thurs closing time,Fri closing time,Sat closing time,Sun closing time 
DBLTD,DB1,STORE1,Main Store,9:00,9:00,9:00,9:00,9:00,9:00,9:00,20:00,20:00,20:00,20:00,20:00,20:00,20:00 
DBLTD,DB1,STORE2,NYC Store,9:00,9:00,9:00,9:00,9:00,9:00,9:00,20:00,20:00,20:00,20:00,20:00,20:00,20:00 

我需要使用Dataweave按以下格式它們映射到一個JSON列表csv文件:

{ 
    "groupId": "DB1", 
    "groupName": "DBLTD", 
    "storeId": "STORE1" 
    "storeName": "Main Store", 
    "openingTimes": 
    [ 
     { 
     "day": "mon", 
     "openingTime": "9:00", 
     "closingTime": "20:00" 
     }, 
     { 
     "day": "tues", 
     "openingTime": "9:00", 
     "closingTime": "20:00" 
     } 
     ...etc 
    ] 
} 

我使用來測試這個工作的XML流量:

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd 
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd"> 
    <flow name="testFlow"> 
     <file:inbound-endpoint path="src\main\resources\input" moveToDirectory="src\main\resources\output" responseTimeout="10000" doc:name="File"/> 
     <dw:transform-message metadata:id="e77b30f7-f9a2-4b97-82a9-23c186dc03cb" doc:name="Transform Message"> 
      <dw:input-payload mimeType="application/csv"/> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/json 
--- 
{ 
    GroupID: payload."Group ID", 
    GroupName: payload."Group Name", 
    StoreId: payload."Store ID", 
    StoreName: payload."Store Name" 
}]]></dw:set-payload> 
     </dw:transform-message> 
    </flow> 
</mule> 

有誰知道我怎麼能做到這一點?

由於

+0

0創建'陣列openingTimes'類型作爲屬性的對象。 1.將csv文件作爲兩個數組讀取。 2.通過一個數組循環。對於每個循環,將臨時對象的'day'屬性設置爲第一個數組中的值,將同一對象的'time'屬性設置爲第二個數組中的值;然後將臨時對象附加到opensTimes數組。 – Alic

+0

所有這些都是在數據編織中完成的嗎?對不起 - 我第一次冒險進入dataweave .. – user3165854

+0

對不起,我不熟悉騾子平臺。但這就是程序員如何在代碼中完成的。 – Alic

回答

1

嘗試下面的代碼...

%dw 1.0 
%output application/json 
--- 
payload map { 
    GroupID: $."Group ID", 
    GroupName: $."Group Name", 
    StoreId: $."Store ID", 
    StoreName: $."Store Name", 
    openingTimes: [ 
     { 
      'day':'mon', 
      'openingTime':$."Mon opening time", 
      'closingTime': $."Mon closing time" 
     }, 
     { 
      'day':'Tues', 
      'openingTime':$."Tues opening time", 
      'closingTime': $."Tues closing time" 
     }, 
     { 
      'day':'Wed', 
      'openingTime':$."Wed opening time", 
      'closingTime': $."Wed closing time" 
     }, 
     { 
      'day':'Thurs', 
      'openingTime':$."Thurs opening time", 
      'closingTime': $."Thurs closing time" 
     }, 
     { 
      'day':'Fri', 
      'openingTime':$."Fri opening time", 
      'closingTime': $."Fri closing time" 
     }, 
     { 
      'day':'Sat', 
      'openingTime':$."Sat opening time", 
      'closingTime': $."Sat closing time" 
     }, 
     { 
      'day':'Sun', 
      'openingTime':$."Sun opening time", 
      'closingTime': $."Sun closing time" 
     } 

    ] 

} 
+0

謝謝。這工作。看起來我正在考慮解決方案。 – user3165854

相關問題