You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6 Minimal API关闭JSON驼峰序列化不生效如何解决

配置不生效的核心原因
  • Minimal API 有独立的JSON序列化配置体系,和AddControllers()注册的MVC/Controller序列化管线互不影响,给Controller配置的Newtonsoft.Json规则不会作用到Minimal API接口
  • Minimal API 默认使用内置System.Text.Json作为序列化器,默认规则是输出驼峰命名(camelCase),和Newtonsoft.Json的配置体系完全独立
  • 很多人容易混淆两个不同命名空间下的JsonOptions:Minimal API使用的是Microsoft.AspNetCore.Http.Json.JsonOptions,而MVC/Controller使用的是Microsoft.AspNetCore.Mvc.JsonOptions,配错命名空间的话规则不会生效。
正确配置方法

最简方案(推荐)

不需要自定义命名策略类,直接将Minimal API的JSON属性命名策略设为null,即可100%保留C#成员定义的原始大小写,不会做任何命名转换,比自定义首字母大写的逻辑更准确(自定义逻辑会强制把所有属性名首字母转大写,无法保留本身就是小驼峰命名的属性原名):

var webAppBuilder = WebApplication.CreateBuilder(args);

// 配置Minimal API全局JSON序列化规则
webAppBuilder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(opt =>
{
    // 不做任何命名转换,完全遵循成员原始大小写
    opt.SerializerOptions.PropertyNamingPolicy = null;
});

同时兼容Controller和Minimal API的配置

如果项目里同时存在基于Controller的接口和Minimal API接口,需要分别给两套管线配置相同规则,才能保证全局序列化行为一致:

// 配置Controller的序列化规则
webAppBuilder.Services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(opt =>
{
    opt.JsonSerializerOptions.PropertyNamingPolicy = null;
});

// 配置Minimal API的序列化规则
webAppBuilder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(opt =>
{
    opt.SerializerOptions.PropertyNamingPolicy = null;
});

关于自定义MemberCasing类的说明

你之前找到的自定义MemberCasing类方案存在逻辑缺陷:它会强制将所有属性名的首字母转为大写,如果类中本身存在首字母小写的属性(比如定义了public string userName { get; set; }),序列化后会被错误转为UserName,不符合“严格遵循成员大小写”的需求,除非你有强制首字母大写的特殊需求,否则不推荐使用。


内容的提问来源于stack exchange,提问作者pantonis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:27:17