代码之家  ›  专栏  ›  技术社区  ›  SkyeBoniwell

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

  •  0
  • SkyeBoniwell  · 技术社区  · 5 年前

    我最近将我的实体框架核心项目从dotnetcore2.2升级到了3.1。

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

    下面是错误:

    “JsonOptions”不包含“SerializerSettings”的定义,也没有可访问的扩展方法 “SerializerSettings”接受类型为“JsonOptions”的第一个参数 可以找到

    新的microsoftjson库有没有像newtonsoftjson那样忽略引用循环和空值?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Nan Yu    5 年前

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

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

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

    • 安装Microsoft.AspNetCore.Mvc.NewtonsoftJson包。
    • 更新 Startup.ConfigureServices 打电话 AddNewtonsoftJson

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