2014-02-20 227 views
1

在EAN API響應一些參數的詳細HotelListRoomType的答覆少人失蹤,一些參數也越來越空值。對於每個單獨的酒店,答覆都會改變。如何同時使用Newtonsoft.Json反序列化檢查Null值 - 分配默認值以空值

這是我的問題如何在 期間識別空值和錯過參數將序列化並將空值分配給默認值。

示例代碼我試圖像這樣分配空值

public class RoomImage 
{ 
    private string useurl = "~/no-picture-available.jpg"; 

    [DefaultValue("~/no-picture-available.jpg")] 
    public string url { get { return useurl; } set { useurl = value; } } 
} 

但不是反序列化過程的工作 - 你可以分享我,你有如何實現這一目標的任何想法。

+0

json在反序列化之前是什麼樣的?它是如何被序列化的第一位? – Jeff

回答

0

爲您發佈這個特殊的例子,你沒有反序列化期間處理null值。您可以閱讀RoomImage類的url屬性中的DefaultValue屬性。下面是代碼:

public class RoomImage 
{ 
    private string useurl; 

    [DefaultValue("~/no-picture-available.jpg")] 
    public string url 
    { 
     get 
     { 
      return !string.IsNullOrWhiteSpace(useurl) 
         ? useurl 
         : ((DefaultValueAttribute) 
          (TypeDescriptor.GetProperties(this)["url"].Attributes[ 
           typeof (DefaultValueAttribute)])).Value.ToString(); 
     } 
     set { useurl = value; } 
    } 
} 

使用此代碼,如果一個值分配給url屬性,當您嘗試訪問它,它會返回一個特定的值。如果url屬性是nullempty或只包含空格的字符串,該DefaultValue將被退回。