使用Json.Net,我在我的對象中需要特別注意的屬性,以便對它們進行序列化/反序列化。作爲JsonConverter
的後裔,我成功地完成了這一任務。這是這樣做的常見方式:在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
實例上工作。但由於我不想或不能在他們的代碼中進行更改,所以我無法介紹我的轉換器。
有沒有什麼辦法可以註冊我的轉換器,在Json.Net中使用一些static
成員,所以無論序列化/反序列化發生在哪裏,我的轉換器總是存在?
太感謝了,你讓我:)日 – Mehran
如果我這樣做的App_Start()事件讓我在asp.net網頁API錯誤。說'方法沒有找到:'虛空Newtonsoft.Json.JsonConvert.set_DefaultSettings' –
@DonnyV。您可能使用的是JSON.NET的舊版本 - 它仍會編譯,因爲已添加到web.config的版本重定向。 – BrainSlugs83