如何强制用户不将属性发送为null,即使它是可空的

时间:2017-09-27 15:23:26

标签: c# json json.net

我想强制用户不要在JSON字符串中发送属性,如果它是null,即使它是可以为空的。

基本上:

Data { "NullableVariable": "Nullable Value" }

正确。

Data {  }

正确。

Data { "NullableVariable": null }

不正确的。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

通过将JsonPropertyAttribute.Required设置为Required.DisallowNull,当且仅当属性存在空值时,才能强制抛出异常,这意味着

  

该属性不是必需的,但不能为空值。

因此,您的类型将如下所示:

=SUM(IIF(Fields!GroupName.Value ="Private", Fields!FullCharge.Value, Nothing))

注意:

  • 设置public class Data { [JsonProperty(Required = Required.DisallowNull, NullValueHandling = NullValueHandling.Ignore)] public string NullableVariable { get; set; } } 后,尝试将以下内容反序列化为上面的Required.DisallowNull类型会引发异常:

    Data

    以下将成功反序列化:

    {"NullableVariable":null} 
    
  • 要在{} {"NullableVariable":""} {"NullableVariable":"Nullable Value"} NullableVariable时成功序列化该类型,您需要设置JsonProperty.NullValueHandling = NullValueHandling.Ignore。这是因为当可空成员为null时,null将导致在序列化期间抛出异常; Required.DisallowNull抑制了这一点(以及空值的输出)。

  • Json.NET 8.0.1中添加了
  • NullValueHandling.Ignore,因此请确保您使用的是此版本或更高版本。