【发布时间】:2011-02-21 20:42:25
【问题描述】:
我正在尝试使用 json.net 反序列化一个有几个孩子的对象。
我有一个自定义转换器来转换从 BaseDuty 类继承的任务及其任务,使用它调用时工作正常
JsonConvert.Deserialize<Duty>(json, new CustomJsonConverter());
但是,调用时
JsonConvert.Deserialize<Person>(json,new CustomJsonConverter());
自定义 json 转换器的 CanConvert 确实会触发...但不会像在针对其编写的类调用时那样进行验证。最终发生的是它不断转换为基类,这不是我想要做的,因为转换器会正确转换它。
那么,我的问题是在如下图中为子对象指定转换器的最佳方法是什么?
下面是一个例子:
public class Person
{
public virtual string Name { get; set; }
public virtual IList<Occupation> Occupations { get;set;}
public virtual IList<RandomProperty> RandomProperties {get;set;}
}
public class Occupation
{
public IList<Duty> Duties {get;set;}
}
public class Duty : BaseDuty
{
public IList<Task> Tasks {get;set;}
}
public class BaseDuty
{
public string Name {get;set;}
}
谢谢
【问题讨论】: