ASP.NET Core 7 Web API如何序列化为PascalCase(帕斯卡命名)?
ASP.NET Core Web API 返回JSON保持PascalCase命名的解决方案
默认情况下,.NET 7的ASP.NET Core Web API会将模型的PascalCase属性自动序列化为camelCase的JSON输出。要让返回的JSON属性与.NET类定义完全一致,可按以下步骤配置:
1. 配置控制器的JSON序列化选项
模板生成的项目以控制器API为主,需在添加控制器服务时覆盖默认序列化策略:
builder.Services.AddControllers() .AddJsonOptions(options => { // 取消自动命名转换,保留类中定义的PascalCase options.JsonSerializerOptions.PropertyNamingPolicy = null; });
2. (可选)适配最小API场景
如果项目同时使用了最小API,补充全局HttpJsonOptions配置确保覆盖所有场景:
builder.Services.ConfigureHttpJsonOptions(options => { options.SerializerOptions.PropertyNamingPolicy = null; });
3. 同步Swagger文档的示例显示
要让Swagger里的JSON示例也显示为PascalCase,需配置Swagger的Schema生成规则:
builder.Services.AddSwaggerGen(options => { options.SchemaGeneratorOptions.PropertyNamingPolicy = null; });
验证效果
配置完成后重启API,调用接口返回的JSON将与模型命名一致:
[ { "Date": "2023-11-28", "TemperatureC": 53, "TemperatureF": 127, "Summary": "Hot" } ]
旧配置失效的原因
你之前仅配置了HttpJsonOptions,但控制器API的序列化选项是独立管理的,必须通过AddControllers().AddJsonOptions()才能覆盖默认的camelCase策略,因此单独配置HttpJsonOptions无法影响控制器的输出结果。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

