【问题标题】:Identify Null values, and missed parameters during DeSerialization and assigning Null values to Default Values在反序列化过程中识别 Null 值和遗漏参数并将 Null 值分配给默认值
【发布时间】:2014-02-20 11:48:16
【问题描述】:

这是我的问题,如何识别 Null 值和期间丢失的参数 反序列化并将 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; } }
}

但在反序列化过程中不起作用 - 你能分享一下你对如何实现这一点的任何想法吗?

【问题讨论】:

  • 反序列化之前的 json 是什么样子的?它是如何被序列化的?

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


【解决方案1】:

对于您发布的这个特定示例,您不必在反序列化期间处理 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2011-09-15
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多