ASP.NET Core 6 Web API中Swagger的JsonIgnore特性未生效问题
问题根因
配置遗漏点在于Swashbuckle(ASP.NET Core默认集成的Swagger组件)默认仅遵循System.Text.Json的序列化规则生成文档Schema。你虽然通过AddNewtonsoftJson()将接口实际运行时的JSON序列化切换为Newtonsoft.Json实现,但Swagger生成层没有同步适配Newtonsoft.Json的特性规则,因此你标记在属性上的Newtonsoft.Json版本[JsonIgnore]不会被Swagger识别,对应属性自然不会被隐藏。
修复方案
- 首先通过NuGet安装官方适配包
Swashbuckle.AspNetCore.Newtonsoft,该包由Swashbuckle官方维护,用于让Swagger生成逻辑同步遵循Newtonsoft.Json的序列化配置。 - 在Program.cs的服务注册段,在所有SwaggerGen相关配置完成后,追加如下配置行:
// 追加在所有Swagger相关服务配置之后 builder.Services.AddSwaggerGenNewtonsoftSupport();
- 校验实体类上的
[JsonIgnore]特性,确认其来自Newtonsoft.Json命名空间,和接口序列化使用的组件保持一致,不要混用System.Text.Json下的同名特性。
配置完成后重新启动项目,Swagger模型定义中标记了[JsonIgnore]的IsPasswordChanged、IsDeleted属性就会被自动隐藏,和接口实际返回的字段结构完全一致。
内容的提问来源于stack exchange,提问作者Ayobamilaye
相关产品推荐
相关产品推荐

