我想强制用户不要在JSON字符串中发送属性,如果它是null,即使它是可以为空的。
基本上:
Data { "NullableVariable": "Nullable Value" }
正确。
Data { }
正确。
Data { "NullableVariable": null }
不正确的。
有没有办法实现这个目标?
答案 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
抑制了这一点(以及空值的输出)。
NullValueHandling.Ignore
,因此请确保您使用的是此版本或更高版本。