簡體   English   中英

當對象為空時,Json.net反序列化失敗

[英]Json.net Deserialization fails when object is empty

當我的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;
    }
}

我正在檢查該值是否為null,然后僅返回'null'。這不起作用。 我還嘗試過返回“”。 兩者都導致相同的錯誤:

反序列化對象時意外的標記:EndObject。 路徑'data.MyObj [5] .text;

在我的源json中忽略/處理這些空對象的正確方法是什么?

謝謝!

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM