C# 如何在c中将列表转换为json#
我已经将CSV转换为字符串列表,我想使用CSV文件头创建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
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"))