如何在自定义JsonConverter中使用默认序列化
我有一个复杂的对象图,正在使用Json.NET进行序列化/反序列化。有些对象是从抽象类派生的,因此为了使反序列化正常工作,我需要创建一个custom
JsonConverter
。它的唯一作用是在反序列化时选择抽象类的适当具体实现,并允许Json.NET继续进行。
我要序列化时出现问题。我根本不需要做任何自定义。我希望获得JsonConvert.SerializeObject
与没有custom时将使用的行为完全相同的行为JsonConverter
。
但是,由于我将自定义JsonConverter类用于反序列化需求,因此我不得不提供WriteJson
实现。由于WriteJson是抽象的,因此我不能只调用base.WriteJson
,但我实际上想这样做。因此,我的问题是,我应采用哪种方法来获得简·简的默认行为?换一种说法:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer){
// What goes here to get default processing?
}
回答:
在您的custom中JsonConverter
,覆盖CanWrite
并返回false:
public override bool CanWrite { get { return false; } }public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
然后,您可以从抛出一个异常WriteJson
,因为它不会被调用。
(同样,要获得在默认的行为
系列化,覆盖CanRead
和回报false
。)
请注意,可以使用相同的方法JsonConverter<T>
(在Json.NET
11.0.1中引入),因为它只是其中的子类JsonConverter
,引入了ReadJson()
和的类型安全版本WriteJson()
。
以上是 如何在自定义JsonConverter中使用默认序列化 的全部内容, 来源链接: utcz.com/qa/409119.html