【问题标题】:Json.net Deserialization fails when object is empty对象为空时,Json.net 反序列化失败
【发布时间】:2012-06-20 23:22:11
【问题描述】:

当我的 JSON 字符串包含一个需要字符串的空对象值时,Json.net 反序列化失败。

 public class MyObj
{
    public Labels labels { get; set; }
    public Type type { get; set; }
    public int value { get; set; }
    [JsonConverter(typeof(SliderTextConverter))]
    public string text { get; set; }
}

有时“文本”等于源 JSON 字符串“{}”中的空对象。 JSON.net 反序列化器似乎因此而爆炸。所以我试图创建一个自定义的 JsonConverter 来解决这个问题。

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

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if(reader.Value == null)
        {
            return null;
        }
        return serializer.Deserialize<string>(reader);
    }

    public override bool CanConvert(Type objectType)
    {
        return true;
    }
}

我正在检查该值是否为空,然后只返回“空”这不起作用。我也尝试过返回“”。两者都导致相同的错误:

反序列化对象时出现意外标记:EndObject。小路 'data.MyObj[5].text;

在我的源 json 中忽略/处理这些空对象的正确方法是什么?

谢谢!

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    Json.NET 上的这篇帖子似乎引用了同样的问题:http://james.newtonking.com/archive/2012/04/11/json-net-4-5-release-2-serializable-support-and-bug-fixes.aspx

    Changes:    
        Fix - Fixed deserializing a null string throwing a NullReferenceException 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多