ASP.NET Core 6 Minimal API如何默认返回驼峰命名JSON响应?
解决ASP.NET Core JSON响应默认驼峰命名问题
问题原因
你当前配置的JsonOptions仅对**最小API(Minimal API)**生效,而你的项目通过MapControllers()使用MVC控制器,需要配置MVC专属的JSON序列化选项才能生效。
解决方案
方法一:针对MVC控制器配置序列化选项
替换原有配置代码,使用MVC的AddJsonOptions来全局设置驼峰命名:
builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; // 若无需忽略请求参数的大小写,可保留或移除该行 options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; }); // 后续代码保持不变 builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();
方法二:同时覆盖Minimal API和MVC的序列化规则
如果项目同时包含Minimal API和MVC控制器,可以同时配置两类选项:
// 配置Minimal API的JsonOptions builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options => { options.SerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.SerializerOptions.PropertyNameCaseInsensitive = false; }); // 配置MVC控制器的JsonOptions builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; });
关于[JsonPropertyName]不生效的说明
配置MVC的序列化选项后,[JsonPropertyName]特性会正常覆盖全局命名策略。之前失效是因为控制器未使用正确的序列化配置,调整后该特性即可按预期工作。
内容的提问来源于stack exchange,提问作者user9297554
相关产品推荐
相关产品推荐

