我有一个复杂的对象图,我正在使用 Json.NET 对其进行序列化/反序列化。一些对象派生自抽象类,因此为了使反序列化正常工作,我需要创建一个自定义JsonConverter
。它的唯一作用是在反序列化时选择抽象类的适当具体实现,并允许 Json.NET 继续其方式。
当我想序列化时,我的问题就出现了。我根本不需要做任何定制的事情。我想要获得与使用完全相同的行为JsonConvert.SerializeObject
没有定制JsonConverter
.
但是,由于我使用自定义 JsonConverter 类来满足我的反序列化需求,因此我被迫提供一个WriteJson
执行。由于 WriteJson 是抽象的,我不能只调用base.WriteJson
,但我基本上想做到这一点。所以我的问题是,我应该在该方法中放入什么来获得简单的默认行为?换句话说:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
// What goes here to get default processing?
}
按照您的习惯JsonConverter, 覆盖CanWrite并返回 false:
public override bool CanWrite { get { return false; } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
然后你可以抛出一个异常WriteJson
,因为它不会被调用。
(同样,要在de序列化、覆盖CanRead并返回false
.)
请注意,相同的方法可用于JsonConverter<T>(引入于Json.NET 11.0.1)因为它只是一个子类JsonConverter
引入了类型安全版本ReadJson() and WriteJson().
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)