C# JSON将空字符串设置为null
在JSON中,空字符串通常被解析为null,但我有一个请求,其中包含:C# JSON将空字符串设置为null,c#,.net,json,null,json.net,C#,.net,Json,Null,Json.net,在JSON中,空字符串通常被解析为null,但我有一个请求,其中包含: "StreetValue":"", 在我的类中,它被反序列化为十进制 public decimal StreetValue { get; set; } 但当我传递空字符串时,它将反序列化为0.00M而不是null。我错过了什么 我的目的是仅当传递了“0.00M”时才将其反序列化为0,否则它应为null。尝试将属性标记为可为null的类型(请注意问号): 这是因为string是一个引用类型,而decimal是一个值类型,所
"StreetValue":"",
在我的类中,它被反序列化为十进制
public decimal StreetValue { get; set; }
但当我传递空字符串时,它将反序列化为0.00M而不是null。我错过了什么
我的目的是仅当传递了“0.00M”时才将其反序列化为0,否则它应为null。尝试将属性标记为可为null的类型(请注意问号):
这是因为string是一个引用类型,而decimal是一个值类型,所以不能将其赋值为null;相反,您的属性将收到
默认值(十进制)
正如Steve所说,您可以使您的属性为空:
decimal?属性{get;set;}
这将允许您随心所欲地使用null。尝试将属性设置为
动态
,这样您就不需要声明数据类型,也不必担心null
值
public dynamic StreetValue { get; set; }
编辑:
在c#6.0中,属性初始化将可用:
public decimal StreetValue { get; set; } = 0.0;
decimal
不可为null,您不能将null
赋值给decimal
。这意味着您丢失了属性的类型,因此不是很有用。@Steve您以前使用过吗?@GilliVilla如果您没有在该属性中获取值作为我的答案,则在反序列化时您会得到null或空字符串
public decimal StreetValue { get; set; } = 0.0;