从 NetCore 2 Newtonsoft JSON 移动到 NetCore 3 中的新 JSON API 时添加选项

Add options when moving from NetCore 2 Newtonsoft JSON to the new JSON API in NetCore 3

我最近将我的 Entity Framework 核心项目从 DotNet Core 2.2 升级到 3.1。

我正在使用 newtonsoft json,但我想知道我是否仍然需要导致错误的这两行。这是这两行:

        services.AddMvc()
                .AddJsonOptions(
                    options =>
                    {
                        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                        options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                    }); 

这里是错误:

'JsonOptions' does not contain a definition for 'SerializerSettings' and no accessible extension method 'SerializerSettings' accepting a first argument of type 'JsonOptions' could be found

新的 Microsoft JSON 库是否有像 Newtonsoft JSON 那样忽略引用循环和空值的东西?

这是 System.Text.Json 的已知限制,此功能可能会在定于 2020 年 11 月发布的 .net 5 中得到解决:

参考:https://github.com/dotnet/corefx/issues/38579 and https://github.com/dotnet/corefx/issues/41002

目前的解决方法是改用 Newtonsoft JSON。要在 ASP.NET Core 3.0 MVC 项目中使用 Newtonsoft.Json

  • 安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson 包。
  • 更新 Startup.ConfigureServices 以调用 AddNewtonsoftJson 并设置设置:

    services.AddMvc()
    .AddNewtonsoftJson(options => {
            options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
        });