Loading

指定Swagger接口文档中参数序列化组件为Newtonsoft.Json

.Net  5 Webapi 内置 Swagger,如果Swagger 接口文档与你接口中对象属性定义的名称或大小写不同,并且所使用 Nuget 包 "Swashbuckle.AspNetCore.SwaggerGen" 版本大于 5.0 ,那么此篇文章或许对你有用

 

原因:Nuget 包 "Swashbuckle.AspNetCore.SwaggerGen" 5.0之后的版本不再默认使用 Newtonsoft 进行序列化,详细原因Swagger GitHub Readme有解释,地址:domaindrivendev/Swashbuckle.AspNetCore: Swagger tools for documenting API's built on ASP.NET Core (github.com)

 

 

 

 

如果你需要指定Swagger 使用Newtonsoft.Json 进行序列化以使用自定义的 JsonProperty 描述你的属性实际序列化名称,那么你可以安装 

 

 Swashbuckle.AspNetCore.Newtonsoft  Nuget包来指定 Swagger 的序列化组件。

1 Package Manager : Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 6.3.0
2 CLI : dotnet add package --version 6.3.0 Swashbuckle.AspNetCore.Newtonsoft

并在服务注册处添加使用 AddSwaggerGenNewtonsoftSupport() 方法来指定其使用 Newtonsoft.Json

1 services.AddMvc();
2 
3 services.AddSwaggerGen(c =>
4 {
5     c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
6 });
7 services.AddSwaggerGenNewtonsoftSupport(); // explicit opt-in - needs to be placed after AddSwaggerGen()

 

重新启动服务后,你会发现 Swagger 接口文档内的对象名称全部和你的代码内的 JsonProperty 属性定义的一模一样了,嘿嘿!😊

 

posted @ 2022-04-22 12:56  Pengxx  阅读(459)  评论(0编辑  收藏  举报