在JSON中,空字符串通常被解析为null但我有一个包含以下内容的请求:
"StreetValue":"",
在我的班级中,它被反序列化为十进制
public decimal StreetValue { get; set; }
但是当我传递空字符串时,它被反序列化为0.00M而不是null。我错过了什么?
我的意图是,只有当" 0.00M"时才将其反序列化为0。传递,否则它应该为null。
答案 0 :(得分:3)
尝试将您的媒体资源标记为可空类型(请注意问号):
public decimal? StreetValue { get; set; }
答案 1 :(得分:1)
这是因为string是引用类型,而decimal是值类型,因此它不能被赋值为null;相反,您的财产将收到default(decimal)
。
正如史蒂夫所说,你可以让你的财产成为可空的:
decimal? Prop { get; set; }
这将允许您根据需要使用null。
答案 2 :(得分:-1)
尝试将您的媒体资源设为dynamic
,这样您就无需声明数据类型,也不必担心null
值。
public dynamic StreetValue { get; set; }
编辑:
在c#6.0中,属性初始化将可用:
public decimal StreetValue { get; set; } = 0.0;