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

ASP.NET Core中使用System.Text.Json如何配置忽略null值

System.Text.Json 配置序列化时忽略null值的实现方法

在ASP.NET Core默认使用的System.Text.Json中,实现和Json.NET的NullValueHandling.Ignore同等效果,可根据实际使用场景选择以下配置方式:

全局生效配置(所有接口返回自动忽略null值)

在项目的服务注册阶段(Program.cs中)配置JSON序列化选项,即可让所有经过框架序列化的返回结果自动忽略null值属性,.NET 6+ 代码如下:

// 配置控制器接口返回的序列化规则
builder.Services.AddControllers()
    .AddJsonOptions(opt =>
    {
        opt.JsonSerializerOptions.DefaultIgnoreCondition = 
            System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
    });

// 如果使用Minimal API,需要额外补充以下配置覆盖默认接口返回规则
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(opt =>
{
    opt.SerializerOptions.DefaultIgnoreCondition = 
        System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull;
});

注意:不要和JsonIgnoreCondition.WhenWritingDefault混淆,该配置除了忽略null值,还会自动忽略值类型的默认值(比如数值0、布尔值false、空GUID等),可根据业务需求选择。

单属性自定义规则

如果不需要全局生效,仅要求特定字段在值为null时不序列化,直接给对应类属性添加[JsonIgnore]特性指定条件即可:

using System.Text.Json.Serialization;

public class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; } = string.Empty;
    
    // 仅当Description属性值为null时,序列化结果不包含该字段
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
    public string? Description { get; set; }
}

单次序列化临时配置

如果只是手动调用序列化方法的单次场景需要忽略null值,直接传入自定义配置即可,不需要修改全局或类定义:

using System.Text.Json;

var data = new { Id = 1, Title = "测试", Remark = (string?)null };
var serializeOptions = new JsonSerializerOptions
{
    DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
};
// 序列化结果仅包含Id、Title字段,不会输出值为null的Remark
string jsonResult = JsonSerializer.Serialize(data, serializeOptions);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:42:51