如何将json数据绑定到自定义类

时间:2017-09-25 11:46:47

标签: c# json

下面的代码片段是Json的回复。我想将它绑定到自定义类。 由于我是json的新手,请有人建议我如何实现这一目标。

{"status":"success",  
 "studentInfo":{"RegNo":"ABCD","ID":"123",
      "parentsDetails":[
   {"Parent_Name":"Anny","Gender":"M"},
   {"Parent_Name":"Danny","Gender":"F"}],
      "Student_Name":"Alex",
      "Student_Status":"Active"}
}

2 个答案:

答案 0 :(得分:1)

这是为json对象生成的类:

public class ParentsDetail
{
    public string Parent_Name { get; set; }
    public string Gender { get; set; }
}

public class StudentInfo
{
    public string RegNo { get; set; }
    public string ID { get; set; }
    public List<ParentsDetail> parentsDetails { get; set; }
    public string Student_Name { get; set; }
    public string Student_Status { get; set; }
}

public class RootObject
{
    public string status { get; set; }
    public StudentInfo studentInfo { get; set; }
}

您可以将其用作

string json = @"{'status':'success', 'studentInfo':{'RegNo':'ABCD','ID':'123','parentsDetails':[{'Parent_Name':'Anny','Gender':'M'},{'Parent_Name':'Danny','Gender':'F'}],'Student_Name':'Alex','Student_Status':'Active'} }"
RootObject jsonObject = JsonConvert.DeserializeObject<RootObject>(json);

答案 1 :(得分:1)

首先,您需要将JSON属性映射到自定义类中,可能与此类似:

public class Student
{
   public string status { get; set; }
   public string studentInfo { get; set; }
   //and so on...
}

然后,我建议您使用JSON.NET(Newtonsoft)来帮助您处理JSON数据。实际的反序列化可能如下所示:

Student myStudentData = JsonConvert.DeserializeObject<Student>(yourInputJson);

myStudentData将允许您访问自定义类中定义的所有JSON属性。此外,请注意,只会映射您在自定义类中定义的属性。例如,即使您的JSON包含类似errorCode属性的内容,如果您未在Student类中定义它,也不会提取它。您应该注意的另一件事是,如果您的输入JSON不包含您在类中定义的属性之一,则反序列化将引发异常。因此,例如,如果您输入的内容不包含status属性,那么您将获得例外。