簡體   English   中英

C#將JSON字符串轉換為.csv

[英]c# convert json string to .csv

我正在嘗試將包含數組元素的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());
        }

嘗試使用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巨型字符串。 讓我們知道這是否是您想要的。

這是使用Cinchoo ETL從JSON文件生成CSV的方法

        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

更新:

            string 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"" ]
  ]
}";

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM