C# 将JSON字符串解析为列表
需要将JSONString解析到列表中。实例列表 我正在尝试使用Newtonsoft提供的JSON.NET 我有以下课程: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;
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;}