如何阻止ASP.NET Core 7 WebAPI Swagger将参数类属性转为小写
解决ASP.NET Core 7 Web API中Swagger将类参数属性转为小写的问题
出现这个问题的核心原因是:ASP.NET Core默认使用的System.Text.Json序列化器采用了驼峰命名策略(小写开头),Swagger会继承这个配置来生成API文档里的参数字段名。以下是几种可行的解决方式:
1. 修改全局JSON序列化配置
如果希望API的请求/响应序列化和Swagger文档都保留类属性的原始命名,在Program.cs中调整控制器的JSON选项:
builder.Services.AddControllers() .AddJsonOptions(options => { // 取消驼峰命名策略,保留属性原始名称 options.JsonSerializerOptions.PropertyNamingPolicy = null; });
2. 单独配置Swagger的Schema生成规则
如果只想让Swagger显示原始属性名,不想影响API实际的JSON序列化行为,可以单独修改Swagger的生成配置:
builder.Services.AddSwaggerGen(options => { // 让Swagger生成Schema时使用属性原始名称 options.SchemaGeneratorOptions.PropertyNamingPolicy = null; });
3. 针对特定类/属性单独控制
如果仅需修改个别类或属性的显示名称,可以给目标属性添加[JsonPropertyName]特性,显式指定名称:
public class UserRequest { [JsonPropertyName("UserName")] public string UserName { get; set; } [JsonPropertyName("EmailAddress")] public string EmailAddress { get; set; } }
选择哪种方式取决于你的实际需求:全局配置适合统一规范,单独配置Swagger适合API序列化和文档显示分离的场景,特性标注适合局部调整。
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

