当前位置:  开发笔记 > 编程语言 > 正文

在自定义JsonConverter的ReadJson方法中处理null对象

如何解决《在自定义JsonConverter的ReadJson方法中处理null对象》经验,为你挑选了1个好方法。



1> Jeroen..:

在写这个问题时,特别是在编写"我试过的东西"位时,我找到了一个可能的解决方案:

if (reader.TokenType == JsonToken.Null) return null;

我发布这个有两个原因:

    如果它足够好,它可能会帮助其他人有同样的问题.

    我可能会从其他人的答案中了解到更好的竞争解决方案.

FWIW,这里是完整的JsonConverter,用于对类型为抽象类的属性进行非常基本的处理反序列化:

public class PetConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(Animal);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.TokenType == JsonToken.Null) return null;

        JObject jsonObject = JObject.Load(reader);

        if (jsonObject["Lives"] != null) return jsonObject.ToObject(serializer);
        if (jsonObject["StopPhrase"] != null) return jsonObject.ToObject(serializer);

        return null;
    }

    public override bool CanWrite { get { return false; } }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    { 
        throw new NotImplementedException(); 
    }
}

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有