如何同时使用Newtonsoft.Json反序列化检查Null值 - 分配默认值以空值

问题描述:

在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

为您发布这个特殊的例子,你没有反序列化期间处理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将被退回。