如何迫使用户不将属性发送为null,即使它是无效的



我想强迫用户在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"}
    
  • 为了成功地将NullableVariablenull的类型序列化,您需要设置JsonProperty.NullValueHandling = NullValueHandling.Ignore。这是因为当序列化序列化时,Required.DisallowNull将导致异常 null null null时; NullValueHandling.Ignore抑制了这一点(以及零值的输出)。

  • Required.DisallowNull在json.net 8.0.1中添加

相关内容

  • 没有找到相关文章

最新更新