鉴于:我在更改方面影响有限的 api,建立在 net core 2.2 之上。使用了标准的 netCore 招摇。某些 DTO 类中的字段标有
[System.ComponentModel.DataAnnotations.Required]
但由于某些原因(也可以讨论),某些方法返回此类的对象,该字段中为空值。注释导致
"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不会返回具有空值的对象,该对象是市场需要的属性。