[英]Problems deserializing using Newtonsoft JSON
我有以下课程:
public class Student
{
public int studentNumber;
public string testWeek;
public string topics;
}
我对它做了一些处理,对其进行序列化并将其保存在文件中。 看起来像这样:
[
{
"studentNumber": 1,
"testWeek": "1",
"topics": "5 & 8"
},
{
"studentNumber": 2,
"testWeek": "1",
"topics": "5 & 8"
},
{
"studentNumber": 3,
"testWeek": "1",
"topics": "5 & 8"
},
{
"studentNumber": 4,
"testWeek": "1",
"topics": "5 & 8"
},
{
"studentNumber": 5,
"testWeek": "1",
"topics": "5 & 8"
}
]
稍后,我想对其进行反序列化,以便再次进行处理。 我有这个代码
Student[] arr = new Student[numberOfStudentsInClass];
arr = JsonConvert.DeserializeObject<Student>(File.ReadAllText(_selectedClass))
其中_selectedClass是包含文件名的字符串。 但是我遇到一个错误
无法将WindowsFormApplicationsForm1.Form.Student转换为WindowsFormApplicationsForm1.Form.Student []
您在JsonConvert.DeserializeObject中指示要尝试反序列化为单个Student
实例。 不是数组。 而且,无需在一个语句中初始化数组,然后在另一个语句上为其分配值。 而且无论如何,这些天我们通常使用通用数组。
更换:
Student[] arr = new Student[numberOfStudentsInClass];
arr = JsonConvert.DeserializeObject<Student>(File.ReadAllText(_selectedClass))
有了这个:
List<Student> students =
JsonConvert.DeserializeObject<List<Student>>(File.ReadAllText(_selectedClass));
作为异常状态,方法JsonConvert.DeserializeObject<Student>
返回类型为Student
的对象,而变量arr
的类型为Student[]
,因此您无法将JsonConvert.DeserializeObject<Student>
的结果分配给arr
。
您需要将文本反序列.ToArray
List<Student>
,如果需要数组,请调用.ToArray
,如下所示:
Student[] students = JsonConvert.DeserializeObject<List<Student>>(File.ReadAllText(_selectedClass)).ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.