C# 如何反序列化包含根元素的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”元素

我正在查看一些JSON数据,如下所示(数据值是假设的):

我试图让学生们进入一个班级,看起来像这样:

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();