簡體   English   中英

當它是 null 時,反序列化並拋出所需屬性的異常

[英]Deserialization and throw exception for required property when it is null

我可能遺漏了什么。 我想測試 API 調用響應返回 null 屬性時的行為,我想在發生這種情況時拋出異常。

我有一個Form object 如下

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

我已經初始化了一個 object

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

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

我期待有一個例外,因為Html屬性是required的並且不能為nullable ,但實際上得到 object 作為

{
    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; }
}

示例程序

[Required]屬性用於Data Annotation


參考

需要 JsonPropertyAttribute

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM