JSON空字符串为null

时间:2015-11-10 04:20:48

标签: c# .net json null json.net

在JSON中,空字符串通常被解析为null但我有一个包含以下内容的请求:

"StreetValue":"",

在我的班级中,它被反序列化为十进制

public decimal StreetValue { get; set; }

但是当我传递空字符串时,它被反序列化为0.00M而不是null。我错过了什么?

我的意图是,只有当" 0.00M"时才将其反序列化为0。传递,否则它应该为null。

3 个答案:

答案 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;