从 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;
});
我最近将我的 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; });