2016-11-14 60 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