0

为什么我的自定义 JsonConverter.WriteJson() 方法没有被调用?

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);

4

1 回答 1

0

显然这是因为GuiData是空的......我想我可以指定:

TypeNameHandling = TypeNameHandling.Objects

但我只想序列化,GuiData即使它为空(我在序列化期间设置它的值),而不序列化所有空属性......好吧,如果我没有找到更好的方法,我想我必须满足它。 ..

于 2013-05-26T16:33:03.477 回答