Swagger,NswagStudio,c#,Required=Newtonsoft.Json.Required.DisallowNull,如何处理
给定:在更改方面,我对api的影响有限,它是基于NetCore2.2构建的。使用Standart netCore招摇过市。某些数据类中的字段标记为Swagger,NswagStudio,c#,Required=Newtonsoft.Json.Required.DisallowNull,如何处理,c#,json.net,swagger,nswag,C#,Json.net,Swagger,Nswag,给定:在更改方面,我对api的影响有限,它是基于NetCore2.2构建的。使用Standart netCore招摇过市。某些数据类中的字段标记为 [System.ComponentModel.DataAnnotations.Required]但出于某些原因(也可以讨论) 某些方法返回此类的对象,该字段中的值为空。注释导致 "required": [ "given", - this field for example "family", "e
[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#client,具有非常标准的设置)。然后,当我试图使用生成的c#client从api中获取这些对象的列表时,如果其中一些属性为null,则会明显抛出newtonsoft反序列化异常。
那我们怎么处理呢?我想到了客户端和服务器端解决方案:
1) 在服务器上,我们可以配置为不公开有关swagger spec所需的信息
2) 在客户端上,我们可以配置将所需块转换为Required=Newtonsoft.Json.Required.Default的行为
3) 忘记所有这些,坚持让api不会返回属性市场所需的空值的对象