空字符串通常被解析到JSON空,但我有一個包含一個請求:JSON空字符串爲空
"StreetValue":"",
在我的課是反序列化作爲小數
public decimal StreetValue { get; set; }
但是當我傳遞空字符串時,它被解序列化爲0.00M而不是null。我錯過了什麼?
只有當「0.00M」被傳遞時,我的意圖是將其反序列化爲0否則它應該爲空。
空字符串通常被解析到JSON空,但我有一個包含一個請求:JSON空字符串爲空
"StreetValue":"",
在我的課是反序列化作爲小數
public decimal StreetValue { get; set; }
但是當我傳遞空字符串時,它被解序列化爲0.00M而不是null。我錯過了什麼?
只有當「0.00M」被傳遞時,我的意圖是將其反序列化爲0否則它應該爲空。
嘗試標記你的財產爲可空類型(注意問號):
public decimal? StreetValue { get; set; }
這是因爲字符串是引用類型,而十進制是值類型,所以它不能被賦值爲null ;相反,您的財產將收到default(decimal)
。
正如史蒂夫說,你可以讓你的特性可爲空:
decimal? Prop { get; set; }
這將允許你爲你想使用空。
嘗試使您的財產到dynamic
因此您無需申報數據類型,也不用擔心null
值。
public dynamic StreetValue { get; set; }
編輯:
在C#6.0屬性初始化將可用:
public decimal StreetValue { get; set; } = 0.0;
這意味着你失去了財產的類型,所以不是很有用。 – Steve
@Steve您之前使用過嗎? –
@GilliVilla如果你沒有在這個屬性中獲得價值,作爲我的答案,當你反序列化時你得到'null或者空字符串' –
'decimal'是不是空的,你不能分配'null'爲'decimal'。 –