使用Json.Net,我的对象中有一些属性需要特别注意才能序列化/反序列化它们。作为 的后代JsonConverter
,我成功地做到了这一点。这是执行此操作的常用方法:
public class SomeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
...
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
...
}
public override bool CanConvert(Type objectType)
{
...
}
}
class SomeClass
{
[JsonProperty, JsonConverter(typeof(SomeConverter))]
public SomeType SomeProperty;
}
//Later on, in code somewhere
SomeClass SomeObject = new SomeClass();
string json = JsonConvert.SerializeObject(SomeObject, new SomeConverter());
我对这段代码的问题是我需要在每个序列化/反序列化中引入我的自定义转换器。在我的项目中,有很多情况我无法做到这一点。例如,我正在使用其他使用 Json.Net 的外部项目,它们将在我的SomeClass
实例上工作。但是由于我不想或不能更改他们的代码,所以我没有办法介绍我的转换器。
有什么方法可以注册我的转换器,static
也许使用一些成员,在 Json.Net 中,所以无论序列化/反序列化发生在哪里,我的转换器总是存在的?