C# 如何反序列化包含根元素的JSON;页脚元素和无关数据?
我正在查看一些JSON数据,如下所示(数据值是假设的): 我试图让学生们进入一个班级,看起来像这样:C# 如何反序列化包含根元素的JSON;页脚元素和无关数据?,c#,json,json.net,C#,Json,Json.net,我正在查看一些JSON数据,如下所示(数据值是假设的): 我试图让学生们进入一个班级,看起来像这样: public class Student { public string Name {get; set} public int Age {get; set} public string Address {get; set} } 请注意以下事项: 1) 有一个根元素(Students),它是不相关的。 2) 有一个似乎是页脚元素(total),这是不相关的。“footer”元素
public class Student
{
public string Name {get; set}
public int Age {get; set}
public string Address {get; set}
}
请注意以下事项:
1) 有一个根元素(Students),它是不相关的。
2) 有一个似乎是页脚元素(total),这是不相关的。“footer”元素的正确术语是什么?
3) 地址;喜爱的科目;最喜欢的运动和最不喜欢的运动是不相关的,即只有名称;年龄和地址是相关的
在过去的几个小时里,我一直在尝试使用Newtonsoft完成这项工作,例如,我尝试了以下方法:
List<Student> students = JsonConvert.DeserializeObject<Student>(json);
List students=JsonConvert.DeserializeObject(json);
我如何使用Newtonsoft反序列化此文件?我已经花了三个小时试图这么做,但还没有成功。您可以根据需要编写自定义Json转换器。您可以从newtonsoft网站获得帮助:您可以使用Json.Net(作业对象)将数据输入学生列表:
var jo = JObject.Parse(json);
List<Student> students = jo["students"]
.Select(t => t["Student"])
.Select(s => new Student
{
Name = (string)s[0],
Age = (int)s[1],
Address = (string)s[2]
})
.ToList();
var jo=JObject.Parse(json);
列出学生=jo[“学生”]
.选择(t=>t[“学生”])
.选择(s=>new Student
{
名称=(字符串)s[0],
年龄=(int)s[1],
地址=(字符串)s[2]
})
.ToList();
Fiddle:您有多个学生,因此您需要为他们提供某种类型的集合,而不是单个的
Student
对象。您的示例json无效。@Broots Waymb,请查看我的更新。我显然有点懒。@w0051977你退房了吗?我只是浏览了一下(因为我也很懒),但它似乎可以解决您的用例。@Stron大师,谢谢。我已经更新了json。我复制和粘贴了部分摘录(并更改了值)。整个提取物很大。
var jo = JObject.Parse(json);
List<Student> students = jo["students"]
.Select(t => t["Student"])
.Select(s => new Student
{
Name = (string)s[0],
Age = (int)s[1],
Address = (string)s[2]
})
.ToList();