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

.NET 6控制台应用:为Generic Host配置Newtonsoft Json.NET替代默认JSON库

在.NET 6控制台应用中为Generic Host配置Newtonsoft Json.NET作为JSON配置解析器

步骤1:安装必要的NuGet包

首先需要安装官方提供的配置适配包,让.NET配置系统支持Newtonsoft.Json:

dotnet add package Microsoft.Extensions.Configuration.NewtonsoftJson

步骤2:修改Generic Host初始化代码

默认的CreateDefaultBuilder会使用System.Text.Json解析JSON配置文件,我们需要替换为Newtonsoft.Json的实现。修改后的完整代码如下:

Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        // 移除默认使用System.Text.Json的JSON配置源
        var defaultJsonSource = config.Sources.FirstOrDefault(s => s is JsonConfigurationSource);
        if (defaultJsonSource != null)
        {
            config.Sources.Remove(defaultJsonSource);
        }

        // 添加appsettings.json,使用Newtonsoft Json.NET解析
        config.AddNewtonsoftJsonFile(
            "appsettings.json",
            optional: false,
            reloadOnChange: true);

        // 添加环境专属配置文件(如appsettings.Development.json)
        config.AddNewtonsoftJsonFile(
            $"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json",
            optional: true,
            reloadOnChange: true);
    })
    .ConfigureLogging(...)
    .ConfigureServices(...)
    .UseConsoleLifetime()
    .Build()
    .StartAsync();

说明

  • 移除默认JSON配置源是为了避免重复加载配置,确保所有JSON配置都通过Newtonsoft.Json解析。
  • AddNewtonsoftJsonFile方法的参数和原生AddJsonFile一致,保持了配置习惯的连贯性。
  • Newtonsoft.Json原生支持BigInteger类型的解析,无需额外配置即可正常加载配置文件中的BigInteger值。如果需要自定义序列化规则,可以通过传入NewtonsoftJsonConfigurationOptions调整,示例:
    config.AddNewtonsoftJsonFile("appsettings.json", options =>
    {
        options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
        // 其他自定义配置
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:09:22