JSON属性的默认数值,带有空字符串

时间:2020-04-24 13:51:53

标签: c# json json.net

我正在尝试反序列化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时,null0

我也尝试了以下操作,但是它返回了null对象(使用decimaldecimal?)...

  [System.ComponentModel.DefaultValue(0)]
  [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
  public decimal my_value { get; set; } = 0;

如果JSON包含属性的空字符串,如何将其设置为默认值0

在有人声明之前 ...是的,简单的答案是在JSON中没有空字符串属性,但是对此我无能为力

1 个答案:

答案 0 :(得分:1)

您需要设置序列化设置以忽略空值。

如果使用的是Newtonsoft,则设置将如下所示。您可以了解更多here

var = jsonSettings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
}