C# 如何在反序列化json时包含子类

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

我有一个低于班级的结构 我正在使用Newtonsoft json反序列化器将json字符串反序列化到学生类下面。 我从json获取LanguageType信息,我希望在反序列化时包含LanguageType类。 当我与

JsonConvert.DeserializeObject(json)

我没有得到LanguageType数据

我不能把数据改成类。 只有当json具有languageType信息时,我才必须包含languageType派生类

请帮我做这个

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类。