2013-05-26 2 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, даже если это значение null (я установил его значение во время сериализации), без сериализации всех свойств null ... ну, если я не найду лучшего способа, d должен быть достаточным ...

Смежные вопросы