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

C# 如何在c中将列表转换为json#,c#,C#,我已经将CSV转换为字符串列表,我想使用CSV文件头创建JSON。输入和输出如下所述 var list = [ [a,b,c], [1,2,3], [4,5,6] ]; 到 假设你的清单看起来像 var list=新字符串[3][]{ 新字符串[3]{“a”、“b”、“c”}, 新字符串[3]{“1”、“2”、“3”}, 新字符串[3]{“4”、“5”、“6”} }; 您可以使用以下方法从中生成json: 公共静态字符串toJson(字符串[][]csvArr

我已经将CSV转换为字符串列表,我想使用CSV文件头创建JSON。输入和输出如下所述

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


假设你的清单看起来像

var list=新字符串[3][]{
新字符串[3]{“a”、“b”、“c”},
新字符串[3]{“1”、“2”、“3”},
新字符串[3]{“4”、“5”、“6”}
};
您可以使用以下方法从中生成json:

公共静态字符串toJson(字符串[][]csvArray){
var sb=新的StringBuilder(“{\n\”元素\“:[\n”);
var headers=新字符串[csvArray[0]。长度];
对于(int i=0;i
。可能需要进行一些更改以调整输入数据,可能需要进行一些额外的验证,但这将使您能够继续。

使用可以反序列化为动态,参考

然后可以使用json.Net将结果序列化为json

现场演示:


请注意,对于CSV文件,您可以使用
StreamReader
,如:

using (var reader = new StreamReader("path\\to\\file.csv"))
虽然我不建议使用打字。对于阅读CSV,我建议编写适当的类来表示数据和映射类,以便让CSV助手完成所有工作:类型检查、无序列、缺少列、缺少标题、重复名称列、不同分隔符、多行数据、引用字段等

免责声明:
此答案与给定的输入和输出不匹配。我选择只考虑有效的部分。如果需要输出为int而不是string。可以创建表示Csv对象的类(Csv帮助器)。
并使用
csvReader.GetRecords()

如果“header”元素是唯一的,也许您可以为每一行构造一个
字典。这里的ref:
var list=[[a,b,c],[1,2,3],[4,5,6]
是无效对象,您正在处理的实际数据是什么,该JSON无效,因为您有一个直接包含没有属性的对象的对象,这将有助于澄清这个问题。输入和输出不足以创建问题。你应该有基本的描述,解释步骤等。这里你有一个其他的问题,你的输入和输出看起来都不正确。你也许也应该读书。并检查数组的json表示。是否确实要投影一个字典列表,其中键是2d数组的第一行?
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);
}
[
  {
    "a": "1",
    "b": "2",
    "c": "3"
  },
  {
    "a": "4",
    "b": "5",
    "c": "6"
  }
]
using (var reader = new StreamReader("path\\to\\file.csv"))