C# 如何在反序列化json时包含子类
我有一个低于班级的结构 我正在使用Newtonsoft json反序列化器将json字符串反序列化到学生类下面。 我从json获取LanguageType信息,我希望在反序列化时包含LanguageType类。 当我与 JsonConvert.DeserializeObject(json)强> 我没有得到LanguageType数据 我不能把数据改成类。 只有当json具有languageType信息时,我才必须包含languageType派生类 请帮我做这个C# 如何在反序列化json时包含子类,c#,json,json.net,C#,Json,Json.net,我有一个低于班级的结构 我正在使用Newtonsoft json反序列化器将json字符串反序列化到学生类下面。 我从json获取LanguageType信息,我希望在反序列化时包含LanguageType类。 当我与 JsonConvert.DeserializeObject(json) 我没有得到LanguageType数据 我不能把数据改成类。 只有当json具有languageType信息时,我才必须包含languageType派生类 请帮我做这个 public class Studen
public class Student
{
public string Name { get; set; }
public string ID { get; set; }
public List<Course> Courses { get; set; }
}
public class Course
{
public string CourseName { get; set; }
public string CourseID { get; set; }
public List<Subject> Subjects { get; set; }
}
public class Subject
{
public string SubjectName { get; set; }
public string SubjectID { get; set; }
public Language Language { get; set; }
}
public class Language
{
public string LanguageName { get; set; }
}
public class LanguageType : Language
{
public string Country { get; set; }
public string Type { get; set; }
}
公共班级学生
{
公共字符串名称{get;set;}
公共字符串ID{get;set;}
公共列表课程{get;set;}
}
公共课
{
公共字符串CourseName{get;set;}
公共字符串CourseID{get;set;}
公共列表主题{get;set;}
}
公共课科目
{
公共字符串SubjectName{get;set;}
公共字符串主语{get;set;}
公共语言{get;set;}
}
公共类语言
{
公共字符串LanguageName{get;set;}
}
公共类语言类型:语言
{
公共字符串国家{get;set;}
公共字符串类型{get;set;}
}
JSON:
{
“学生”:{
“名称”:“XYZ”,
“ID”:“0123”,
“课程”:[
{
“课程名称”:“ABC”,
“CourseID”:“129”,
“主题”:[
{
“主题名称”:“测试”,
“主观性”:“11”,
“语言”:{
“语言名称”:“英语”,
“语言类型”:{
“国家”:“英国”,
“类型”:”
}
}
}
]
}
]
}
}因为我们没有json文件。试试这个怎么样:
public List <languageType> _obj {get; set;}
公共列表_obj{get;set;}
您必须基于JSON数据创建C#模型/类。您可以使用vs,例如复制JSON数据并创建一个空文件。之后
编辑->粘贴特殊->将JSON粘贴为类。
也可以使用任何将JSON数据转换为C的在线工具#
之后,您可以对其进行反序列化,如
JsonConvert.DeserializeObject<T>(jsonData);
JsonConvert.DeserializeObject(jsonData);
这是一个与JSON数据兼容的类请分享您的JSON为什么希望使用LanguageType?它不在您的类型层次结构中的任何位置。我看不出
LanguageType
与您的其他类有什么关系。我已经添加了用于回复的JsonTank,但我无法更改模型。这种语言类型是动态的。如果我得到LanguageType信息,我必须包含这个子类,否则就不能。@user11286517您可以将这个类继承给另一个具有LanguageType的类。基于JSON数据,您可以根据响应指定创建任何类的对象,即swicth类。