如何使用Newtonsoft.Json在DeSerialization中检查Null值 - 将默认值分配给空值

时间:2014-02-20 11:48:16

标签: asp.net json c#-4.0 json.net

在HotelListRoomType的几个响应中,EAN API响应的详细信息很少有参数丢失,很少有参数获得Null。每个酒店的回复都会发生变化。

这是我的问题如何识别空值和错过的参数 DeSerialization并将Null值指定为Default Values。

我试过的示例代码像这样分配空值

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

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

但是在DeSerialization过程中没有工作 - 你能否与我分享你如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

对于您发布的这个特定示例,您不必在反序列化期间处理null值。您可以阅读DefaultValue类的url属性上的RoomImage属性。这是代码:

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