Sup*_*der 24 serialization json json.net asp.net-web-api asp.net-core
我是ASP.Net Web Api Core的新手.我一直在使用ASP.Net MVC过去的几年里,我一直都写了ActionFilter,并用于JSON.Net为Serializing数据导入JSON.所以,通过这种方式,我取代了微软JavaScript Serializer(比它慢JSON.Net)JSON.Net(声称速度提高了400%).
如何在ASP.Net Web Api Core中完成所有这些操作?在哪里更改默认格式化程序?
注意:如果您有任何疑问,请随时询问.
谢谢
Mik*_*ton 41
在 .NET Core 3.0+ 中包含 NuGet 包Microsoft.AspNetCore.Mvc.NewtonsoftJson,然后替换
services.AddControllers();
Run Code Online (Sandbox Code Playgroud)
在ConfigureServices与
services.AddControllers().AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)
这是 .NET Core 3.0 中的预发布 NuGet 包,但 .NET Core 3.1 中的完整发布包。
我自己遇到过这个问题,但我发现在这个 SO question and answer 中有一些附加信息的相同答案。
编辑:作为一个有用的更新:AddNewtonsoftJson()即使不安装Microsoft.AspNetCore.Mvc.NewtonsoftJsonNuGet 包,调用 的代码也会编译和运行。如果你这样做,它会在安装了两个转换器的情况下运行,但默认为System.Text.Json你可能不想要的转换器,因为你正在阅读这个答案。因此,您必须记住安装 NuGet 包以使其正常工作(如果您清除并重做 NuGet 依赖项,请记住重新安装它)。
Tse*_*eng 29
ASP.NET Core已经使用JSON.NET,因为JavaScriptSerializer它没有实现/移植到.NET Core.
Microsoft.AspNetCore.Mvc取决于Microsoft.AspNetCore.Formatter.Json其取决于Microsoft.AspNetCore.JsonPatch,这取决于Newtonsoft.Json(见源).
这是一个代码片段,用于调整.net核心应用程序的设置
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc()
.AddJsonOptions(options => {
// send back a ISO date
var settings = options.SerializerSettings;
settings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
// dont mess with case of properties
var resolver = options.SerializerSettings.ContractResolver as DefaultContractResolver;
resolver.NamingStrategy = null;
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20772 次 |
| 最近记录: |