2013-05-26 169 views
0

爲什麼我的自定義JsonConverter.WriteJson()方法沒有被調用?爲什麼JsonConverter.WriteJson()永遠不會被調用,儘管JsonConverter.ReadJson()確實被調用?

class MyType{ 
    [JsonConverter(typeof(DocumentXamlDeserializer))] 
    public string GuiData { get; set; } 

    public string SimpleString; 
} 

雖然ReadJson不會被調用:

public class DocumentXamlDeserializer : JsonConverter 
{ 
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(Gui.Handler.SerializeData()); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     var xaml = reader.Value as string; 
     Gui.Handler.DeserializeData(xaml); 
     return xaml; 
    } 

    public override bool CanConvert(Type objectType) { return typeof(string).IsAssignableFrom(objectType); } 
} 

序列化的呼叫:JsonConvert.SerializeObject(dataModel, Formatting.Indented);

反序列化的呼叫:JsonConvert.DeserializeObject<Model>(raw);

+0

我有相反的問題。 WriteJson被調用,但是ReadJson永遠不會被調用。 – Triynko

回答

0

顯然,這是因爲GuiData爲空...我我猜可以指定:

TypeNameHandling = TypeNameHandling.Objects 

但我想序列只有GuiData即使是空(我設置序列化過程中它的值),無序列化所有空的屬性......嗯,如果我沒有找到更好的辦法,我想我」 ð必須滿足於它...

相關問題