Csv到Json转换器工具

时间:2015-08-19 03:27:54

标签: json csv avro

我有一个csv文件,我想将其转换为Avro;因为没有工具可以直接从csv转换为avro,我决定使用在线工具从csv转换为json,然后我打算编写一个小程序来转换json转换为avro模型。 我遇到的问题是csv文件看起来像这样

H1,H2,H3
------------------
A1,A2,A3,A4,A4
B1,B2,B3,B4
C1,C2,C3

H3之后的每一列都是H3阵列的一部分。 现有的工具似乎没有包含这个功能(这个说它确实如此,但我不知道如何使用它:http://www.convertcsv.com/csv-to-json.htm)。 有人知道如何处理这件事。

谢谢, Shripadsrd

3 个答案:

答案 0 :(得分:0)

您正在寻找的是根据一些嵌套参数包装您的JSON结果。基本上就是这样:

H1, H2, H3
------------------
A1, A2, A3, A4, A4
B1, B2, B3, B4
C1, C2, C3 

对此:

[
    {
        "H1": "A1",
        "H2": "A2",
        "H3": [
            "A3",
            "A4",
            "A4"
        ]
    },
    {
        "H1": "B1",
        "H2": "B2",
        "H3": [
            "B3",
            "B4"
        ]
    },
    {
        "H1": "C1",
        "H2": "C2",
        "H3": [
            "C3"
        ]
    }
]

我在http://csvtojson.com

创建了一个解决此类问题的工具

您需要做的是调整标题,以便明确说明您希望如何嵌套结果。 对于您的示例,它看起来像:

H1, H2, H3.0, H3.1, H3.2
A1, A2, A3, A4, A4
B1, B2, B3, B4
C1, C2, C3 

注意如何使用点H3H3.0H3.1重复H3.2:这些点表示您希望如何将结果包装到H3数组中。最后,按下"转换按钮"并且会提示您结果。

希望它有所帮助。

答案 1 :(得分:0)

我不熟悉Avro,但以下jq过滤器将执行转换 Jona Rodrigues描述。具体来说:如果文件filter.jq包含

[
  split("\n")                           # split string into lines
| (.[0]    | split(",")) as $headers    # split header
| (.[1:][] | split(","))                # split data rows
| select(length>0)                      # get rid of empty lines
| $headers[:-1] as $h1                  # fixed headers
| .[:($h1|length)] as $p1               # fixed part
| .[($h1|length):] as $p2               # variable part
| (
     [   [ $h1, $p1 ]                   # \  
       | transpose[]                    #  \ assemble fixed object
       | {key:.[0], value:.[1]}         #  / from fixed keys and values
     ] | from_entries                   # /
  ) + {
     ($headers[-1]): $p2                # assemble variable object
  }
]

data包含

H1,H2,H3
A1,A2,A3,A4,A4
B1,B2,B3,B4
C1,C2,C3

然后命令

jq -M -R -s -r -f filter.jq data    

将产生

[
  {
    "H1": "A1",
    "H2": "A2",
    "H3": [
      "A3",
      "A4",
      "A4"
    ]
  },
  {
    "H1": "B1",
    "H2": "B2",
    "H3": [
      "B3",
      "B4"
    ]
  },
  {
    "H1": "C1",
    "H2": "C2",
    "H3": [
      "C3"
    ]
  }
]

答案 2 :(得分:0)

这可以在Powershell中完成。

Import-Csv "foo.csv" | ConvertTo-Json | Add-Content -Path "foo.json"

您也可以添加-compress开关以删除换行符

Import-Csv "foo.csv" | ConvertTo-Json -compress | Add-Content -Path "foo.json"