2015-11-10 248 views
1

空字符串通常被解析到JSON空,但我有一個包含一個請求:JSON空字符串爲空

"StreetValue":"", 

在我的課是反序列化作爲小數

public decimal StreetValue { get; set; } 

但是當我傳遞空字符串時,它被解序列化爲0.00M而不是null。我錯過了什麼?

只有當「0.00M」被傳遞時,我的意圖是將其反序列化爲0否則它應該爲空。

+3

'decimal'是不是空的,你不能分配'null'爲'decimal'。 –

回答

2

嘗試標記你的財產爲可空類型(注意問號):

public decimal? StreetValue { get; set; } 
1

這是因爲字符串是引用類型,而十進制是值類型,所以它不能被賦值爲null ;相反,您的財產將收到default(decimal)

正如史蒂夫說,你可以讓你的特性可爲空:

decimal? Prop { get; set; }

這將允許你爲你想使用空。

-1

嘗試使您的財產到dynamic因此您無需申報數據類型,也不用擔心null值。

public dynamic StreetValue { get; set; } 

編輯:

在C#6.0屬性初始化將可用:

public decimal StreetValue { get; set; } = 0.0; 
+0

這意味着你失去了財產的類型,所以不是很有用。 – Steve

+0

@Steve您之前使用過嗎? –

+0

@GilliVilla如果你沒有在這個屬性中獲得價值,作爲我的答案,當你反序列化時你得到'null或者空字符串' –