简体   繁体   English

如何在 c# 中将列表转换为 json

[英]How to convert list to json in c#

I have converted CSV to a list of string I want to create a JSON using the header of CSV file the input and output are as mentioned below I have converted CSV to a list of string I want to create a JSON using the header of CSV file the input and output are as mentioned below

var list = [
    [a,b,c],
    [1,2,3],
    [4,5,6]
    ];

to

var json = { 
        {
            "a":1,
            "b":2,
            "c":3
        },
        {
            "a":4,
            "b":5,
            "c":6
        }
    }

Assuming your list looks like假设您的列表看起来像

        var list = new string[3][] {
            new string[3] { "a","b","c" },
            new string[3] {"1","2","3" },
            new string[3] {"4","5","6"}
        };

You can make a json from it using this method:您可以使用以下方法从中制作 json:

public static string toJson(string[][] csvArray) {
        var sb = new StringBuilder("{\n\"elements\": [\n");
        var headers = new string[csvArray[0].Length];
        
        for(int i = 0; i < csvArray[0].Length; i++)
        {
            headers[i] = csvArray[0][i];
        }
        
        for(int i = 1; i < csvArray.Length; i++)
        {
            sb.AppendLine("{");
            for(int j = 0; j < csvArray[i].Length; j++)
            {
                sb.AppendLine("\"" + headers.ElementAtOrDefault(j) + "\": \"" + csvArray[i][j] + "\",");
            }
            sb.Remove(sb.Length-3, 3); // remove last ",/n" to make json valid
            sb.AppendLine("\n},");
        }
        sb.Remove(sb.Length-3, 3); // remove last ",/n" to make json valid
        sb.AppendLine("\n]\n}");
        
        return sb.ToString();
    }

Check it in fiddler .在 fiddler 中检查它 Some alterations might be needed to adjust to your input data, maybe some additional validations, but it will let you go forward.可能需要进行一些更改以适应您的输入数据,可能需要进行一些额外的验证,但它会让您向前推进 go。

Using CSV Helper you can deserialize to Dynamic, ref doc .使用CSV 助手,您可以反序列化为动态,参考文档

Then you can serialize the result to json using JSON.Net ref .然后,您可以使用 JSON.Net ref将结果序列化为 json 。

var txtInput = "a,b,c\n1,2,3\n4,5,6";
string output;
using (var reader = new StringReader(txtInput))
using (var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    var records = csvReader.GetRecords<dynamic>();
    output = JsonConvert.SerializeObject(records, Formatting.Indented);
}

Result:结果:

[
  {
    "a": "1",
    "b": "2",
    "c": "3"
  },
  {
    "a": "4",
    "b": "5",
    "c": "6"
  }
]

Live Demo: https://dotnetfiddle.net/lF0zJ2现场演示: https://dotnetfiddle.net/lF0zJ2


Note that for CSV file you can use a StreamReader like:请注意,对于 CSV 文件,您可以使用StreamReader ,例如:

using (var reader = new StreamReader("path\\to\\file.csv"))

While I don't recommend using dynamic typing.虽然我不建议使用动态类型。 For reading a CSV I will recommend writing the proper class representing the data and the mapping class in order to let CSV Helper do everything: type check, unordered column, missing column, missing header, duplicate name column, different separator, multiline data, quoted field etc etc. For reading a CSV I will recommend writing the proper class representing the data and the mapping class in order to let CSV Helper do everything: type check, unordered column, missing column, missing header, duplicate name column, different separator, multiline data, quoted领域等

Disclaimer:免责声明:
This answers doesn't match the given input and ouput.这个答案与给定的输入和输出不匹配。 I choosed to take into account only the part that was valid.我选择只考虑有效的部分。 If you need the ouput to be int instead of string.如果您需要输出为 int 而不是 string。 You can create a class representing the Csv Object (CSV helper Getting Started ).您可以创建一个 class 代表 Csv Object(CSV 助手入门)。 And use csvReader.GetRecords<MyClass>() .并使用csvReader.GetRecords<MyClass>()

如何转换列表<object>至 Json | C#<div id="text_translate"><p> 我有一个由对象组成的列表,每个 object 有 5 个数据。 我需要将该列表转换为 json,但使用序列化它会填满空的 json。</p><p> 有谁知道我可能做错了什么?</p><pre> foreach (DataRow dtRow in dtAlarmas.Rows) { String Name = dtRow["Name"].ToString(); String ID = dtRow["ID"].ToString(); String AlarmText = dtRow["AlarmText"].ToString(); String AlarmTimeNoNula = dtRow["AlarmTimeNoNula"].ToString(); lstAlarmasNoTratadas.Add(new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel(dtRow["Name"].ToString(), Convert.ToInt32(dtRow["ID"]), dtRow["Class"].ToString(), dtRow["AlarmText"].ToString(), dtRow["AlarmTimeNoNula"].ToString())); } string sParams = JsonConvert.SerializeObject(lstAlarmasNoTratadas);</pre><p> 转换后的 sParams 值 = "[{}]"</p><p> Class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel</p><pre> using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ondoan.DatosAux.Alarmas { public class AlarmaNoTratadaModel { private string Name; private int ID; private string Class; private string AlarmText; private string AlarmaTimeNoNula; public AlarmaNoTratadaModel(string Name, int ID, string Class, string AlarmText, string AlarmaTimeNoNula) { // TODO: Complete member initialization this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula; } public class AlarmaNoTratadasModel { public AlarmaNoTratadasModel() { } public AlarmaNoTratadasModel(String Name, Nullable&lt;System.Int32&gt; ID, String Class, String AlarmText, String AlarmaTimeNoNula) { this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula.ToString(); } public System.String Name { get; set; } public Nullable&lt;System.Int32&gt; ID { get; set; } public System.String Class { get; set; } public System.String AlarmText { get; set; } public System.String AlarmaTimeNoNula { get; set; } } } }</pre></div></object> - How to Convert List<Object> to Json | C#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 C# 中将列表转换为 JSON? - How to convert a list to JSON in C#? 如何在C#中将JSON响应转换为列表? - How to convert JSON Response to a List in C#? 如何将JSON数组转换为C#列表? - How to convert a JSON array into a C# List? 如何将json转换为列表c# - how to convert json to list c# 如何转换列表<object>至 Json | C#<div id="text_translate"><p> 我有一个由对象组成的列表,每个 object 有 5 个数据。 我需要将该列表转换为 json,但使用序列化它会填满空的 json。</p><p> 有谁知道我可能做错了什么?</p><pre> foreach (DataRow dtRow in dtAlarmas.Rows) { String Name = dtRow["Name"].ToString(); String ID = dtRow["ID"].ToString(); String AlarmText = dtRow["AlarmText"].ToString(); String AlarmTimeNoNula = dtRow["AlarmTimeNoNula"].ToString(); lstAlarmasNoTratadas.Add(new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel(dtRow["Name"].ToString(), Convert.ToInt32(dtRow["ID"]), dtRow["Class"].ToString(), dtRow["AlarmText"].ToString(), dtRow["AlarmTimeNoNula"].ToString())); } string sParams = JsonConvert.SerializeObject(lstAlarmasNoTratadas);</pre><p> 转换后的 sParams 值 = "[{}]"</p><p> Class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel</p><pre> using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ondoan.DatosAux.Alarmas { public class AlarmaNoTratadaModel { private string Name; private int ID; private string Class; private string AlarmText; private string AlarmaTimeNoNula; public AlarmaNoTratadaModel(string Name, int ID, string Class, string AlarmText, string AlarmaTimeNoNula) { // TODO: Complete member initialization this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula; } public class AlarmaNoTratadasModel { public AlarmaNoTratadasModel() { } public AlarmaNoTratadasModel(String Name, Nullable&lt;System.Int32&gt; ID, String Class, String AlarmText, String AlarmaTimeNoNula) { this.Name = Name; this.ID = ID; this.Class = Class; this.AlarmText = AlarmText; this.AlarmaTimeNoNula = AlarmaTimeNoNula.ToString(); } public System.String Name { get; set; } public Nullable&lt;System.Int32&gt; ID { get; set; } public System.String Class { get; set; } public System.String AlarmText { get; set; } public System.String AlarmaTimeNoNula { get; set; } } } }</pre></div></object> - How to Convert List<Object> to Json | C# 如何在c#中将Json字符串转换为List - How to convert a Json string to List in c# 如何在C#中将Json数组转换为列表 - How to convert Json array to list in c# 将 json 转换为 List&lt;&gt; C# - Convert json to List<> c# 如何在 C# 中将 Json 列表字符串转换为列表? - How to Convert Json list String to List in c#? 如何将一组JSON对象转换为C#列表 - How to Convert a Set of JSON Objects to C# List
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM