2016-07-29 65 views
0

我有一个CSV这样的:嵌套CSV - 骡DataWeave

data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 

我用spliter处理一行记录线,进一步我用splitBy“”在dataweave的记录转换成地图。但是,我怎么能做到另一个层次的分裂“;” ? SplitBy不允许多个分隔符,因此数据织物中的CSV类型也是如此。

最后,我希望有一个JSON是这样的:

{ 
    "1":"data1", 
    "2":"data2", 
    "3":{ 
     "a":"dataa", 
     "b":"datab", 
     "c":"datac" 
    }, 
    "x":"datax", 
    "y":"datay", 
    "z":"dataz " 
} 

有什么想法?

+0

预期的JSON结果无效。你是这个意思吗? { “1”: “DATA1”, “2”: “数据2”, “3”:{ “一个”: “DataA的”, “B”: “数据B”, “C”: “DATAC” }, “X”: “数据X”, “Y”: “DATAY”, “Z”: “DATAZ” } –

+0

哎呀,我的错字。你是对的 。 – gnanagurus

回答

1

我想观察一下,你的JSON例子结构不好! 在这个JSON的第四个元素是一个对象,它没有一个键,只值... 首先,你应该验证你的结束JSON。您有效的JSON的 例子: enter image description here

当U验证您的JSON,我会尽力在convering您的CSV数据到JSON帮助。

+0

我修复了数据,你现在可以看看吗? – gnanagurus

3

尝试下面的DataWeave代码:

%dw 1.0 
%output application/json 
--- 
payload map { 
    "1": $[0], 
    "2": $[1], 
    "3": using (detail = $[2] splitBy ";") { 
     a: detail[1], 
     b: detail[2], 
     c: detail[3] 
    }, 
    x: $[3], 
    y: $[4], 
    z: $[5] 
} 

注:

  • 我修改的输入数据分离datacdatax。与,如更换;字符:...;datab;datac,datax,...
  • 我用文件连接器来读取CSV文件,并直接在处理它DataWeave变压器(不使用分配器
+0

我主要使用分离器,因为它一行一行地分割记录。此外,我使用数据编辑处理记录。但根据你的建议,我能达到同样的效果吗?数据编织可以照顾流媒体吗?基本上,在我的用例中文件大小不确定 – gnanagurus