给出:我对api影响有限的api是基于net core 2.2构建的。使用Standart netCore昂首阔步。 DTO的某些类别中带有标记为
[System.ComponentModel.DataAnnotations.Required]
但由于某些原因(也可以讨论)
一些方法返回此类的对象,并且在此字段中为null。注释导致
"required": [
"given", - this field for example
"family",
"email",
"postCode"
],
"type": "object",
...
在庄严的规格 然后产生
[Newtonsoft.Json.JsonProperty("given", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
在C#生成的代码中(我使用的是nswag studio和具有标准配置的c#客户端)。然后,当我尝试使用生成的c#客户端从api获取此类对象的列表时,如果某些此类属性具有null,则它会明显引发newtonsoft反序列化异常。 那么我们该如何处理呢?我想到了客户端和服务器端的解决方案:
1)在服务器上,我们可以配置为不公开有关摇摇规格所需的信息。
2)在客户端上,我们可以配置将Required块转换为Required = Newtonsoft.Json.Required.Default
的行为3)忘记所有这些,并坚持要求api不会返回带有空值的对象,而该值是市场需要的。