我们正在尝试将System.Text.Json集成到我们的REST API和REST客户端中,之前使用Newtonsoft。
我们使用nsag CSharpClientGenerator.GenerateFile通过代码(而不是nSwag Studio)生成REST API客户端。
由于属性名称和json名称之间的大小写差异,项目不能正确地显示。我们可以通过设置PropertyNameCaseInsensitive = true来克服这个问题。
我们可以通过下面的部分类来实现:
partial class MakeClient
{
partial void UpdateJsonSerializerSettings(JsonSerializerOptions settings)
{
settings.PropertyNameCaseInsensitive = true;
}
}
我真的不想为每个客户端创建这些分部类。
有没有更简单的方法来做到这一点,比如将JsonSerializerOptions注入客户端,或者某种类型的全局设置?
2条答案
按热度按时间watbbzwu1#
要将
System.Text.Json
用于NSwag
生成的API客户端(NSwag
版本高于v14 preview
)和基类,请执行以下操作:Microsoft.AspNetCore.Mvc.NewtonsoftJson
和其他与Newtonsoft
相关的NuGet包(如果有的话)-以防你还没有。他们不需要。SystemTextJson
和基类-将其添加到nswag.json
中-例如BaseClient
BaseClient.cs
UpdateJsonSerializerSettings
方法toe950272#
尝试设置Newtonsoft的一个预定义的解析器:CamelCasePropertyValueContractResolver在nSwag中的设置如下:
或者,如果您为每个API规范维护单独的nswag设置,也可以在那里添加。
这个解析器将在模式中的FromJson和ToJson方法中设置,前提是您已经启用了通过NSwag生成这些方法。这也有一个设定。
这将生成如下代码: