C# 将JSON字符串解析为列表

C# 将JSON字符串解析为列表,c#,json,json.net,C#,Json,Json.net,需要将JSONString解析到列表中。实例列表 我正在尝试使用Newtonsoft提供的JSON.NET 我有以下课程: public class Item { public int ID { get; set; } public string Name { get; set; } public string Url { get; set; } public string Manufactorers { get;

需要将JSONString解析到列表中。实例列表 我正在尝试使用Newtonsoft提供的JSON.NET

我有以下课程:

    public class Item
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }
        public string Manufactorers { get; set; }

    }
JSON字符串如下所示:

[
{     
 "Column0":23.0,
 "Column1":"Евроен",
 "Column2":"https://www.123.com",
 "Column3":"Фак"
},
{
 "Column0":24.0,
 "Column1":"Еил",
 "Column2":"https://www.123.com",
 "Column3":"Старт"
}
]
string JSONString = string.Empty;
JSONString = JsonConvert.SerializeObject(result);
List<Item> items = JsonConvert.DeserializeObject<List<Item>>(JSONString);
我一直在尝试这样做:

[
{     
 "Column0":23.0,
 "Column1":"Евроен",
 "Column2":"https://www.123.com",
 "Column3":"Фак"
},
{
 "Column0":24.0,
 "Column1":"Еил",
 "Column2":"https://www.123.com",
 "Column3":"Старт"
}
]
string JSONString = string.Empty;
JSONString = JsonConvert.SerializeObject(result);
List<Item> items = JsonConvert.DeserializeObject<List<Item>>(JSONString);
但它返回0和null。 我不知道怎么修

在这里我还需要解析Excel文件。这段代码可以工作,但在反序列化之后,我只有0和null

var filePath = @"..\..\..\..\doc.xlsx";

using (var steam = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
   using (var reader = ExcelReaderFactory.CreateReader(steam))
   {
       var result = reader.AsDataSet().Tables["Лист1"];

       string JSONString = string.Empty;
       JSONString = JsonConvert.SerializeObject(result);

       List<Item> items = JsonConvert.DeserializeObject<List<Item>>(JSONString);

    }
}

JSON的命名与您的类不匹配。可以使用JsonProperty属性修复此问题:

[JsonProperty("Column0")]
public decimal ID { get; set; }
第二,当存在小数点时,JSON反序列化程序无法将字符串23.0反序列化为int。您可以将ID重新键入为十进制或双精度以使其正常工作

这里的小测试:

public class TestClass
{
    [JsonProperty("Column0")]
    public decimal ID { get; set; }
}
然后,反序列化可以正常工作:

var testClassJson = "{\"Column0\": 12.0}";
var i = JsonConvert.DeserializeObject<TestClass>(testClassJson);

这不是C,可能是C吗?选择标记时请注意。没有名为Column0、Column1的属性。。。在你们班。这就是反序列化在所示代码中失败的原因,结果是什么?如果我添加名为Column0,Column1的属性,我会看到此错误Newtonsoft.Json.JsonReaderException:“无法将字符串转换为整数:ID.Path'[0].Column0',第1行,位置16。”结果是var result=reader.AsDataSet.Tables[ЛЛааС1];。这是解析Excel文件的一部分。它可以工作,但类型为string[JsonPropertyColumn0]public string ID{get;set;}