我有一个复杂的对象图,我使用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,JsonSerializer serializer) { throw new NotImplementedException(); }
那么你可以抛出WriteJson的异常,因为它不会被调用.