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

从Newtonsoft.Json迁移至System.Text.Json:Program.cs配置转换

将Newtonsoft.Json全局默认配置转换为System.Text.Json(.NET 6)

原Newtonsoft.Json配置解析

你原来的代码是设置全局默认的序列化/反序列化规则,包含三个核心配置:

  • 序列化时忽略null值
  • 反序列化时忽略目标类型中不存在的成员
  • 使用驼峰命名进行属性名称转换

对应System.Text.Json的实现

场景1:ASP.NET Core Web项目(API/MVC)

在.NET 6的Program.cs中,通过AddJsonOptions配置全局控制器的Json序列化规则,替换原JsonConvert.DefaultSettings:

var builder = WebApplication.CreateBuilder(args);

// 配置控制器的Json序列化选项
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 对应NullValueHandling.Ignore:序列化时忽略null值
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
        // 对应MissingMemberHandling.Ignore:反序列化时忽略不存在的属性(不抛出异常)
        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
        // 对应CamelCasePropertyNamesContractResolver:全局使用驼峰命名转换
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    });

var app = builder.Build();

// 其他中间件配置(如路由、授权等)
app.MapControllers();

app.Run();

场景2:非Web项目(控制台、桌面应用等)

System.Text.Json没有类似JsonConvert.DefaultSettings的全局静态默认配置,你可以创建一个静态的配置实例复用:

// 定义全局Json配置(可放在Program.cs或单独的静态类中)
public static class JsonGlobalOptions
{
    public static readonly JsonSerializerOptions Default = new()
    {
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        PropertyNameCaseInsensitive = true,
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase
    };
}

// 序列化使用示例
var json = JsonSerializer.Serialize(yourObject, JsonGlobalOptions.Default);

// 反序列化使用示例
var obj = JsonSerializer.Deserialize<YourType>(json, JsonGlobalOptions.Default);

补充说明

  • PropertyNameCaseInsensitive:System.Text.Json默认是严格匹配属性名称大小写,开启这个选项后,反序列化时会忽略大小写差异,同时自动忽略目标类型中不存在的成员,对应Newtonsoft的MissingMemberHandling.Ignore。
  • DefaultIgnoreCondition:除了WhenWritingNull,还有WhenWritingDefault(忽略默认值),可根据需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:22:22