我正在尝试反序列化JSON字符串,该字符串包含一个属性的空字符串值...该属性应解析为类的decimal
属性...
public class myClass {
public decimal my_value { get; set; } = 0;
}
var json = "{ \"my_value\": \"\" }";
var data = JsonConvert.DeserializeObject<myClass>(json);
问题在于数据以null
对象的形式返回。
我尝试将属性设置为decimal?
,但这确实返回了一个对象,但是当我需要将其默认设置为my_value
时,null
是0
。
我也尝试了以下操作,但是它返回了null
对象(使用decimal
或decimal?
)...
[System.ComponentModel.DefaultValue(0)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
public decimal my_value { get; set; } = 0;
如果JSON包含属性的空字符串,如何将其设置为默认值0
?
在有人声明之前 ...是的,简单的答案是在JSON中没有空字符串属性,但是对此我无能为力
答案 0 :(得分:1)
您需要设置序列化设置以忽略空值。
如果使用的是Newtonsoft,则设置将如下所示。您可以了解更多here
var = jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
}