如何将CSV字段映射到JSON列表?

如何将CSV字段映射到JSON列表?,json,csv,mule,anypoint-studio,dataweave,Json,Csv,Mule,Anypoint Studio,Dataweave,我使用的是Mule 3.8.1,并且有一个csv文件,该文件将店内开门时间发送为 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

我使用的是Mule 3.8.1,并且有一个csv文件,该文件将店内开门时间发送为

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列表:

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

有人知道我怎么做吗

谢谢

请尝试以下代码

%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创建一个属性为数组类型的
openingTimes
的对象。1.将csv文件作为两个数组读取。2.循环一个数组。对于每个循环,将临时对象的
day
属性设置为第一个数组中的值,将同一对象的
time
属性设置为第二个数组中的值;然后将临时对象附加到openingTimes数组中。所有这些都是在dataweave中完成的吗?抱歉-我第一次尝试dataweave..抱歉,我不熟悉Mule平台。但这就是程序员在代码中所做的。谢谢。成功了。看来我想得太多了。