反序列化并在 required 属性 为 null 时抛出异常

Deserialization and throw exception for required property when it is null

我可能漏掉了什么。 我想测试当 API 调用响应 returns 为 null 的 属性 时的行为,我想在发生这种情况时抛出异常。

我有一个 Form 对象如下

public class Form
{
    [Required]
    public string Html { get; set; }
    public string Json { get; set; }
    public string Name { get; set; }
}

我已经初始化了一个对象

var myData = new
{
    Json = "foo",
};

string jsonData = JsonConvert.SerializeObject(myData);
var response = JsonConvert.DeserializeObject<Form>(File.ReadAllText(jsonPath));

我原以为会出现异常,因为 Html 属性 是 required 而不是 nullable, 但实际上将对象获取为

{
    Html = null, 
    Json = foo,
    Name = null
}

我曾尝试按如下方式使用 JsonSerializerSettings,但这实际上仅在存在额外的不需要的 属性 时才会抛出异常,而在缺少

时不会抛出异常。

JsonSerializerSettings config = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error, NullValueHandling = NullValueHandling.Include};
var res =  JsonConvert.DeserializeObject<Form>(json,config);

你需要[JsonProperty(Required = Required.Always)].

public class Form
{
    [JsonProperty(Required = Required.Always)]
    public string Html { get; set; }
    public string Json { get; set; }
    public string Name { get; set; }
}

Sample Program

[Required] 属性用于 Data Annotation


参考

JsonPropertyAttribute required