如何修改Swagger生成的JSON Schema使其匹配C#类字段名
解决Swagger Schema字段名与C#类名称不匹配的问题
默认情况下,ASP.NET Web API中Swagger生成的JSON Schema会将C#类的PascalCase字段转为小写驼峰格式。要让Schema中的字段名与C#代码里的名称完全一致,可通过以下配置实现:
方法1:全局统一配置JSON序列化规则
如果希望API的所有JSON输出(包括接口返回和Swagger Schema)都保留C#类的原字段名,在Program.cs中添加如下配置:
builder.Services.AddControllers() .AddJsonOptions(options => { // 取消自动命名策略,保持字段名与C#类定义一致 options.JsonSerializerOptions.PropertyNamingPolicy = null; });
方法2:仅针对Swagger Schema单独配置
如果只想让Swagger Schema保留原字段名,不影响API接口的JSON返回格式,可单独配置Swashbuckle的Schema生成规则:
builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" }); // 关闭参数的驼峰命名转换 c.DescribeAllParametersInCamelCase(false); // 取消Schema字段的自动命名策略,保留C#原字段名 c.SchemaGeneratorOptions.PropertyNamingPolicy = null; });
配置完成后重启项目,Swagger生成的Schema中,WeatherForecast类的字段会显示为Date、TemperatureC、TemperatureF、Summary,与C#代码中的定义完全匹配。
内容的提问来源于stack exchange,提问作者Vadim Artyushenko
相关产品推荐
相关产品推荐

