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

.NET 7 Minimal API中如何替换System.Text.Json为Newtonsoft JSON?

.NET 7 Minimal API 替换 System.Text.Json 为 Newtonsoft.Json 的正确配置

步骤1:安装必要的NuGet包

Minimal API集成Newtonsoft.Json需要依赖Microsoft.AspNetCore.Mvc.NewtonsoftJson包,通过以下命令安装:

dotnet add package Microsoft.AspNetCore.Mvc.NewtonsoftJson

步骤2:配置服务(替换之前无效的配置)

在Program.cs中,替换你之前的AddMvc()或AddControllersWithViews()配置,改用以下代码:

builder.Services.AddControllers().AddNewtonsoftJson(options =>
{
    // 自定义Newtonsoft.Json序列化设置,示例配置默认契约解析器
    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
    // 可添加其他序列化配置,比如日期格式、空值处理等
    // options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
    // options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});

// 确保端点API探索器被注册,让Minimal API使用配置好的JSON格式化器
builder.Services.AddEndpointsApiExplorer();

为什么之前的配置无效?

你之前使用的AddMvc()和AddControllersWithViews()是针对完整MVC/视图控制器场景的服务注册,而Minimal API不依赖这些控制器相关的服务体系,所以无法触发Newtonsoft.Json的配置生效。而AddControllers()是针对API控制器的轻量服务注册,同时会为Minimal API提供全局的JSON序列化格式化器支持。

验证生效

创建一个测试模型并映射端点:

public class Product
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
}

app.MapGet("/products", () =>
{
    return new Product { ProductId = 1, ProductName = "Test Product" };
});

启动项目后访问/products,如果返回的JSON字段为ProductId、ProductName(PascalCase),说明Newtonsoft.Json已经生效(System.Text.Json默认会转为驼峰命名productId、productName)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:05:11