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

.NET Core 5.0如何忽略响应Null值以缩减接口响应体积?

.NET Core 5.0 忽略JSON响应Null值缩减体积方案

问题分析

你直接返回模型时响应体积为16.6MB,手动用Newtonsoft.Json序列化后体积增至24MB,核心原因是手动序列化时启用了Formatting.Indented(缩进格式化),额外的空格、换行大幅增加了字符量;同时直接返回模型时框架会自动处理序列化优化(甚至可能启用压缩),手动序列化字符串返回则丢失了这些优化。

有效解决方案

方案1:配置默认System.Text.Json忽略Null值(.NET Core 5默认序列化器)

.NET Core 5默认使用System.Text.Json作为JSON序列化器,全局配置忽略Null值只需在Startup.cs的ConfigureServices中添加如下配置:

services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 序列化时忽略值为Null的属性
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
    });

配置后直接返回模型Ok(response)即可,框架会自动按配置序列化,无需手动处理。

方案2:若项目使用Newtonsoft.Json(需提前安装包)

如果你的项目配置了使用Newtonsoft.Json(通过Microsoft.AspNetCore.Mvc.NewtonsoftJson NuGet包),全局配置忽略Null值如下:

services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
        // 注意:不要手动加Formatting.Indented,避免额外体积开销
    });

额外优化:启用响应压缩

配合响应压缩可进一步大幅减小体积,在Startup.cs中添加:

// 注册响应压缩服务
services.AddResponseCompression(options =>
{
    options.EnableForHttps = true;
    options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/json" });
});

// 在Configure中启用中间件
app.UseResponseCompression();

验证效果

配置完成后,接口返回的JSON会自动剔除所有值为Null的属性,如你期望的示例所示,同时保持序列化的紧凑格式(无多余缩进),配合压缩后体积会显著降低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:43