【发布时间】:2021-12-27 08:52:01
【问题描述】:
我正在尝试反序列化一个 Json 文件,但由于数组“统计信息”,我目前被卡住了。 我的 Json 文件如下所示:
[
{
"name": "itemName",
"level": 8,
"imgUrl": "https://imgItemName.png",
"description": "itemDescription.",
"statistics": [
{
"Vitality": {
"min": 10,
"max": 13
}
}
]
}
]
我的课是这样的:
public class Item
{
public string name;
public int level;
public string type;
public string imgUrl;
public string description;
public List<Statistics>statistics;
//public List<JArray> statistics;
//public Statistics[] statistics;
}
public class Statistics
{
public string Vitality;
public List<MinMax> minmax;
//public MinMax[] minMax;
}
public class MinMax
{
public string min;
public string max;
}
这就是我试图反序列化文件的方式:
string json = System.IO.File.ReadAllText("items.json");
var listItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Item>>(json);
我已经尝试了很多组合,但无论如何都无法恢复 Statistics 键。 任何帮助将不胜感激:)
【问题讨论】:
-
不要以复数形式命名类,以复数形式命名返回集合的属性,例如
List<Statistic> Statistics -
活力不包含 [ ],因此不是 minmax 列表。统计量是统计量的列表,统计量具有活力属性,即最小值和最大值的对象。如果您希望类可以工作,请将您的 json 粘贴到 QuickType.io 中(您自己从 json 中提取类并没有什么令人费解的地方;计算机可以更快、更全面地做到这一点)
-
@CaiusJard 我更偏爱json2csharp.com - 但只是因为我是那里的贡献者(I implemented their support for immutable DTOs :))
-
你的类不代表 JSON,试试这个:stackoverflow.com/questions/21611674/…
-
感谢我不知道这些网站的答案,但这对我有很大帮助!
标签: c# json deserialization