2013-05-26 109 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即使是空(我设置序列化过程中它的值),无序列化所有空的属性......嗯,如果我没有找到更好的办法,我想我” ð必须满足于它...

相关问题