我想强迫用户在json字符串中不发送属性,即使它是空的。
基本上:
Data { "NullableVariable": "Nullable Value" }
正确。
Data { }
正确。
Data { "NullableVariable": null }
不正确。
有没有办法实现这一目标?
您可以在且仅当存在带有null值的属性时,通过将JsonPropertyAttribute.Required
设置为 Required.DisallowNull
时,才能强制抛弃异常,这意味着
不需要属性,但不能是零值。
因此,您的类型看起来像:
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
为null
的类型序列化,您需要设置JsonProperty.NullValueHandling = NullValueHandling.Ignore
。这是因为当序列化序列化时,Required.DisallowNull
将导致异常 null null null时;NullValueHandling.Ignore
抑制了这一点(以及零值的输出)。Required.DisallowNull
在json.net 8.0.1中添加