.Net Core 5.0 内置 Swagger,如果Swagger 接口文档与你接口中对象属性定义的名称或大小写不同,并且所使用 Nuget 包 "Swashbuckle.AspNetCore.SwaggerGen" 版本大于 5.0 ,那么此篇文章或许对你有用 原
.Net Core 5.0 内置 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 属性定义的一模一样了,嘿嘿!