Nei*_*len 35 asp.net json.net asp.net-core asp.net-core-3.0
我刚刚将我的ASP Web API项目从.Net core 2.0升级到3.0。我在用
services.AddMvc()
.AddJsonOptions(options =>options.SerializerSettings.ContractResolver
= new DefaultContractResolver());
Run Code Online (Sandbox Code Playgroud)
以前是为了确保序列化JSON的小写字母。
升级到3.0后,出现此错误...
错误CS1061'IMvcBuilder'不包含'AddJsonOptions'的定义,找不到可以接受的扩展方法'AddJsonOptions'接受类型为'IMvcBuilder'的第一个参数(是否缺少using指令或程序集引用?)
根据Asp.Net Core 2.2中MvcJsonOptions的AddJsonOptions,Microsoft.AspNetCore.Mvc.Formatters.Json nuget包提供了AddJsonOptions扩展方法。我尝试安装/重新安装此程序,但仍然无法解决该方法。有趣的是,智能感知仅显示Microsoft.AspNetCore.Mvc.Formatters。即使我添加了Json nuget包,当我尝试添加using语句时也使用Xml。
有什么想法吗?该文档为AddJsonOptions只上升到.NET 2.2所以也许是方法已经在3.0赞成一些其他配置机制的被弃用?
pok*_*oke 62
作为ASP.NET Core 3.0的一部分,该团队默认情况下不再包括Json.NET。您可以在有关对Microsoft.AspNetCore.App进行重大更改的公告中了解有关此内容的更多信息。
代替Json.NET,ASP.NET Core 3.0和.NET Core 3.0包括一个不同的JSON API,该API更加注重性能。您可以在有关“ .NET Core 3.0中JSON的未来”的公告中了解更多信息。
ASP.NET Core的新模板将不再与Json.NET捆绑在一起,但是您可以轻松地重新配置项目以使用它而不是新的JSON库。这对于与较旧项目的兼容性以及对新库都不应完全替代都非常重要,因此您在此处看不到全部功能。
为了使用Json.NET重新配置ASP.NET Core 3.0项目,您将需要添加对NuGet的引用Microsoft.AspNetCore.Mvc.NewtonsoftJson,该引用是包含所有必要位的软件包。然后,在Startup的中ConfigureServices,您将需要像这样配置MVC:
services.AddControllers()
.AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)
这将设置MVC控制器,并将其配置为使用Json.NET而不是该新API。除了控制器以外,您还可以使用其他MVC重载(例如,具有视图或Razor页面的控制器)。该AddNewtonsoftJson方法有一个重载,使您可以像AddJsonOptions在ASP.NET Core 2.x中一样配置Json.NET选项。
services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
Run Code Online (Sandbox Code Playgroud)
这对我有用(.net core 3)
services.AddMvc().AddJsonOptions(o =>
{
o.JsonSerializerOptions.PropertyNamingPolicy = null;
o.JsonSerializerOptions.DictionaryKeyPolicy = null;
});
Run Code Online (Sandbox Code Playgroud)
小智 6
这对我有用,从 NuGet 安装 NewtonsoftJson 包“dotnet add package Microsoft.AspNetCore.Mvc.NewtonsoftJson --version 3.1.0”版本 3.1.0 适用于 ASP.NET Core 3.0 并使用以下代码-
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddNewtonsoftJson(opt => {
opt.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
希望它工作正常,谢谢。
| 归档时间: |
|
| 查看次数: |
13423 次 |
| 最近记录: |