.NET Core中配置Swagger显示含Null值响应节点的方法咨询
.NET Core配置Swagger展示含Null值的JSON节点
要让Swagger的JSON响应展示所有含Null值的节点,需要从JSON序列化配置和Swagger文档生成配置两方面入手:
1. 配置JSON序列化保留Null值
默认情况下,.NET Core的JSON序列化会自动忽略值为Null的属性,需要修改配置让其保留这些字段:
针对System.Text.Json(.NET 6+默认)
在Program.cs中修改AddControllers的配置:
builder.Services.AddControllers() .AddJsonOptions(options => { // 从不忽略任何属性(包括值为Null的) options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.Never; });
针对Newtonsoft.Json(兼容旧项目)
如果项目使用Newtonsoft.Json替代默认序列化库,配置如下:
builder.Services.AddControllers() .AddNewtonsoftJson(options => { // 明确指定包含Null值的属性 options.SerializerSettings.NullValueHandling = NullValueHandling.Include; });
2. 配置Swagger Schema展示所有属性
确保Swagger的模型文档能正确显示所有属性(包括允许为Null的),在Program.cs的AddSwaggerGen中添加配置:
builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" }); // 配置Schema生成器,确保所有属性都出现在文档中 c.SchemaGeneratorOptions.IgnoreObsoleteProperties = false; c.UseAllOfToExtendReferenceSchemas(); });
验证效果
重启API后,在Swagger界面调用目标接口,就能看到响应中包含IsTest1、IsTest2等值为Null的节点了。
内容的提问来源于stack exchange,提问作者Nic
相关产品推荐
相关产品推荐

