2016-11-14 45 views
0

我想要的域值映射從CSV轉換成JSON格式,下面的代碼是映射從CSV領域,並將其轉換成JSON格式我dataweave代碼:輸出JSON格式使用dataweave

%dw 1.0  
%output application/json  
---  
{ 

"volume": 
[  
    payload groupBy $.StartDate map ((val,cal) -> 
    { 
     StartDate:val.StartDate[0], 

     rows : 
     [ 
      { 
       AccountID : val.AccountID, 
       ProductID : val.ProductID, 
       Value : val.Value 
      } 
     ] 
    } 
    ) 
]  
} 

蔭獲得輸出如下: -

{ 

"volume": [ 
[ 
    { 
    "StartDate": "8/1/2016", 
    "AccountID": [ 
     "16482965", 
     "16482966" 
    ], 
    "ProductID": [ 
     "12235398476-AR02", 
     "12235398477-AR03" 
    ], 
    "Value": [ 
     "1720", 
     "1722" 
    ] 
    }, 
    . 
    . 
    . 

但我想我的輸出看起來像下面:

{ 

"volume": [ 
[ 
    { 
    "StartDate": "8/1/2016", 
    "AccountID":"16482965","ProductID":"12235398476-AR02","Value":"1720", 
    "AccountID":"16482966","ProductID":"12235398477-AR03","Value": "1722" 
    }, 
    . 
    . 
    . 

任何人都可以在這裏?

+0

你呈現什麼作爲期望的JSON是不合法的(或至少是不一致的)。你有兩個'AccountID','ProductID'和'Value'的實例。我想你的意思是有一個字段用於'StartDate'和一個結構數組,每個結構就像一個記錄(包含AccountID,ProductID和Value)。 – FDavidov

+0

是@FDavidov - 我希望所有三個字段AccountId,ProductId和值作爲由startdate組成的結構數組。 – user6755654

+0

我會添加所需的結構作爲答案(不可能在這裏做)。 – FDavidov

回答

0

根據你回答我的問題,以下是你需要構建JSON結構:

{ 
    "volume": [ 
       { 
        "StartDate": "8/1/2016", 
        "Entries": [ 
           {"AccountID":"16482965","ProductID":"12235398476-AR02","Value":"1720"}, 
           {"AccountID":"16482966","ProductID":"12235398477-AR03","Value":"1722"} 
           ] 
       }, 
       ... 
       ] 
    . 
    . 
    . 
} 

注意添加"Entries"元素的結構。它可以讓你通過數組通過使用類似的參考運行:

...volume[n].Entries[j].AccountID 

希望這使得事情更清晰你。

UPDATE: 我錯過了關閉]。現在添加。

+0

嗨@ FDavidov,我已經粘貼了更新的代碼,但我再次得到相同的結構。請你檢查是否有任何錯過! – user6755654

+0

恐怕我不知道用於生成JSON的語言,因此我只能猜測(並且很可能浪費您的時間)。我的直覺告訴我,問題在於'groupBy'的開頭。嘗試刪除/更改它。如果這不起作用......我無法幫助你超越這一點。如果你考慮對我的答案進行投票,我會很感激,因爲它確實幫助你(識別JSON的錯誤結構)。 – FDavidov

+0

感謝您的投票:-) – FDavidov

0

我用下面的代碼,你可以請確認

 %dw 1.0 
    %output application/json 
    --- 
    { 
     "Transaction":"111", 
     "type":"b002", 
     "volume": 
     [  
      payload groupBy $.StartDate map ((val,cal) -> 
      { 
       StartDate:val.StartDate[0], 

       "Entries" : 
       [ 
        { 
         AccountID : val.AccountID, 
         ProductID : val.ProductID, 
         Value : val.Value 
        } 
       ] 
      } 
      ) 
     ] 
    } 

And iam still getting the out put as : 

      { 
     "Transaction": "111", 
     "type": "b002", 
     "volume": [ 
      [ 
      { 
       "StartDate": "8/1/2016", 
       "Entries": [ 
       { 
        "AccountID": [ 
        "16482965", 
        "16482966" 
        ], 
        "ProductID": [ 
        "12235398476-AR02", 
        "12235398477-AR03" 
        ], 
        "Value": [ 
        "1720", 
        "1722" 
        ] 
       } 
       ] 
      }, 
      { 
       "StartDate": "7/31/2016", 
       "Entries": [ 
       { 
        "AccountID": [ 
        "16482964" 
        ], 
        "ProductID": [ 
        "12235398475-AR01" 
        ], 
        "Value": [ 
        "1720" 
        ] 
       } 
       ] 
      } 

      ] 
     ] 
     } 
+0

現在,您的JSON是_legal_,但不是您所需要的。您可以使用[this](http://jsonlint.com/)網站來測試生成的JSON的結構。如果出現錯誤,它會顯示給你。你還有額外的'['(例如''AccountID「:')。 – FDavidov