C#将JSON字符串转换为.csv

时间:2019-05-13 21:53:40

标签: c# json csv choetl

我正在尝试将包含数组元素的json字符串转换为.csv文件。以下是json字符串格式:

{"inputFile": [["Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"], ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"], ["K", "L", "M", "N", "O", "P", "Q", "R", "S", "T"]]}

解决了。谢谢heyNow。

            dynamic dynObj = JsonConvert.DeserializeObject(json);
            var rowElements = new List<string>();

            foreach (var data in dynObj.inputFile)
            {
                var row = new List<string>();
                foreach (var dataItem in data)
                {
                    var item = Convert.ToString(dataItem);
                    row.Add(item);
                }

                rowElements.Add( String.Join(",", row)+"\n");
            }
            var CSV = String.Join("",rowElements);
            Console.WriteLine(CSV);

For RaJN:
Updated code to replace json file path to json string:

        StringBuilder msg = new StringBuilder();
        using (var p = ChoJSONReader.LoadText(jsonString)
            .WithJSONPath("$.inputFile[*]")
            )
        {
            using (var w = new ChoCSVWriter(msg))
            {
                w.Write(p);
            }
            Console.WriteLine(msg.ToString());
        }

2 个答案:

答案 0 :(得分:1)

尝试使用newtonsoft jsonparser。
如果您可以将JSON作为字符串获取。

dynamic dynObj = JsonConvert.DeserializeObject(jsonString);

string CSV = "";

foreach (var data in dynObj.inputFile)
{
    List<string> row = new List<string>();

    foreach(var dataItem in data)
    {
        row.Add(dataItem);
    }

    CSV+=string.Join(row, ",");
}

您将获得1个包含所有值的CSV巨型字符串。 让我们知道这是否是您想要的。

答案 1 :(得分:0)

在这里,您可以使用Cinchoo ETL从JSON文件生成CSV

mkl_set_num_threads(1);

输出:

        StringBuilder msg = new StringBuilder();
        using (var p = new ChoJSONReader("*** YOUR JSON FILE PATH ***")
            .WithJSONPath("$.inputFile[*]")
            )
        {
            using (var w = new ChoCSVWriter(msg))
            {
                w.Write(p);
            }
            Console.WriteLine(msg.ToString());
        }

更新:

Column1,Column2,Column3,Column4,Column5,Column6,Column7,Column8,Column9,Column10
A,B,C,D,E,F,G,H,I,J
K,L,M,N,O,P,Q,R,S,T
相关问题