2016-07-28 119 views
1

我有一个CSV文件这样的例子:如何将csv转换为该格式的json文件?

0 -8,396 13,414 -35,891 39,22489124 
1 -8,789 12,768 -35,891 39,09516883 
2 -9,136 12,768 -35,891 39,17463722 
3 -9,614 12,768 -35,891 39,2888623 
4 -9,614 12,397 -36,282 39,52844709 
5 -9,614 12,397 -36,282 39,52844709 

我需要将其转换为一个JSON文件,以这样的形式:

{"0": [-12.770680147058824, 1.846047794117647, -54.265625, 55.77863587895704], 
"1": [-18.388229927007298, 6.5360401459854014, -52.65647810218978, 56.156491225545878], 
"2": [-20.042738970588236, 12.849264705882353, -46.678308823529413, 52.399231898471129], 
"3": [-38.242244525547449, 15.836222627737227, -40.48357664233577, 57.897972254845804], 
"4": [-33.016879562043798, 6.3001824817518246, -38.179288321167881, 50.867127813832226]} 

你有什么想法,我该怎么办呢?

+0

你到目前为止尝试过什么?请显示你的代码。 – Soviut

回答

1

尝试使用这个工具: http://www.convertcsv.com/csv-to-json.htm

用一下参数...

+1

你能提供一些额外的提示吗? – fao

+1

指示:根据您的区域设置,您可能不得不在输入中将逗号更改为句点。 1.将数据粘贴到输入区域。 2.输入选项 - 字段分隔符是空格并取消选中第一行是标题3.在步骤4中,将模板设置为{lb} {br},将部分重复为“{f1}”:[{f2},{f3 },{f4},{f5}]和底部{br} {rb},然后按模板将Csv转换为JSON。 – dataman

+0

@dataman - 卓越的额外提示:) –

0

这很难回答这个问题不知道你使用的语言,但总体思路应该是相同的最。 我将采取由线像读线的CSV文件的办法:

JSONObject jsn = new JSONObject() 
    for(line in csvfile){ 
     List lst = new ArrayList(); 
     String[] temp = line.split(","); //as it should be comma separated 
     for(int i=1;i<temp.len;++i){ 
      lst.add(temp[i]); 
     } 
     jsn.put(temp[0], list); 
    } 

这仅仅是一个sudo的代码示例,但你应该明白了吧。

0

您可以使用此CSV to JSON Converter来做你想做的。

点击示例然后选择无标题索引。这将基于这个问题加载一个示例。然后点击转换。驱动此转换的主要设置是输出类型字典数组

PS:您的输入在分隔符(空格,范围从1到3个字符)方面有点不一致。我猜这是在这里复制粘贴它的结果,并且原始文件具有制表符作为分隔符。

免责声明:我建立了这个工具。

0

下面是使用jq

reduce (
    split("\n")[]   # split string into lines 
    | split("\t")    # split into columns 
    | select(length>0)  # eliminate blanks 
    | map(gsub(",";"."))  # change decimal character 
) as $r (
    {} 
; .[$r[0]] = $r[1:]   # build requested result 
) 

如果filter.jq包含此过滤器和data包含制表符分隔数据

0 -8,396 13,414 -35,891 39,22489124 
1 -8,789 12,768 -35,891 39,09516883 
2 -9,136 12,768 -35,891 39,17463722 
3 -9,614 12,768 -35,891 39,2888623 
4 -9,614 12,397 -36,282 39,52844709 
5 -9,614 12,397 -36,282 39,52844709 

然后将样品数据

$ jq -M -R -r -s -f filter.jq data | \ 
    sed -e ':a' -e 'N' -e '$!ba' \ 
     -e 's/",\n /",/g' \ 
     -e 's/\[\n /\[/g' \ 
     -e 's/\n \]/\]/g' 

产生

中的溶液
{ 
    "0": [ "-8.396", "13.414", "-35.891", "39.22489124"], 
    "1": [ "-8.789", "12.768", "-35.891", "39.09516883"], 
    "2": [ "-9.136", "12.768", "-35.891", "39.17463722"], 
    "3": [ "-9.614", "12.768", "-35.891", "39.2888623"], 
    "4": [ "-9.614", "12.397", "-36.282", "39.52844709"], 
    "5": [ "-9.614", "12.397", "-36.282", "39.52844709"] 
} 

注意sed最后只是为这个堆栈溢出示例呈现更紧凑的JSON。