在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过程中没有工作 - 你能否与我分享你如何实现这一目标。
答案 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
属性为null
,empty
或仅包含空格的字符串,则会返回DefaultValue
。