Json.net当我的JSON字符串包含一个需要字符串的空对象值时,反序列化失败。
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; }
}
有时'text'等于源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;
}
}
我正在检查值是否为null然后只返回'null'这不起作用。我也试着回来,“”。两者都会导致相同的错误:
反序列化对象时出现意外的标记:EndObject。路径 “data.MyObj [5]的.text;
在源json中忽略/处理这些空对象的正确方法是什么?
谢谢!
答案 0 :(得分:0)
这篇关于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