2016-12-16 3 views
-1

Я использую Mule 3.8.1 и есть файл CSV, который посылает в магазин открытия разаКак сопоставить поля 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 

Мне нужно отобразить их в список JSON в следующем формате, используя Dataweave:

{ 
    "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' того же объекта для значения из второго массива; затем добавьте временный объект к массиву openTimes. – Alic

+0

Все это сделано в области передачи данных? Извините, мое первое предприятие в dataweave .. – user3165854

+0

Извините, я не знаком с платформой Mule. Но вот как программист сделает это в коде. – 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

Смежные вопросы