如何将JSON对象反序列化为使用派生类的C#类?
我有以下类,我正在使用这些类对JSON进行序列化和反序列化: 我的派生类与JSON中嵌入的如何将JSON对象反序列化为使用派生类的C#类?,c#,json.net,C#,Json.net,我有以下类,我正在使用这些类对JSON进行序列化和反序列化: 我的派生类与JSON中嵌入的$type名称一起被序列化 但是,当我将JSON字符串反序列化回消息对象时,反序列化程序不会对派生类对象进行重新水化。我只得到一个基类任务的列表 我以为$type是通过使用typenameholling=typenameholling.Objects向反序列化程序提供了关于实例化哪些类的提示,但我错了 要反序列化基类为任务的对象,并将派生类重新水化到列表中,我需要做什么 此项目仅限于.NET Framewo
$type
名称一起被序列化
但是,当我将JSON字符串反序列化回消息
对象时,反序列化程序不会对派生类对象进行重新水化。我只得到一个基类任务的列表
我以为$type
是通过使用typenameholling=typenameholling.Objects
向反序列化程序提供了关于实例化哪些类的提示,但我错了
要反序列化基类为任务的对象,并将派生类重新水化到列表中,我需要做什么
此项目仅限于.NET Framework 3.5。请确保使用相同的JsonSerializerSettings
进行反序列化。它不必是相同的实例,但必须设置typenameholling=typenameholling.Objects
才能进行反序列化。确保使用相同的JsonSerializerSettings
进行反序列化。它不必是同一个实例,但必须设置typenameholling=typenameholling.Objects
才能进行反序列化。啊……这完全击中了我的盲点。谢谢。啊……这完全击中了我的盲点。谢谢
public class Message
{
public Guid MessageId { get; set; }
public List<Task> Tasks { get; set; }
}
public class Task
{
public int TaskId { get; set; }
}
public SomeTask : Task
{
public string SomeTaskThing { get; set; }
public List<string> Operations { get; set; }
}
public OtherTask : Task
{
public int OtherTaskThing { get; set; }
public List<int> MoreOtherTaskThings { get; set; }
}
string json = JsonConvert.SerializeObject(
message,
Formatting.Indented,
new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
});