Sex*_*yMF 25 json asp.net-core
我的 csproject 文件表明: <TargetFramework>netcoreapp3.0</TargetFramework>
在我的启动中,我使用以下内容:
services.AddMvc(x => x.Filters.AddService<TransactionFilter>())
.AddJsonOptions(options => options.JsonSerializerOptions... )
Run Code Online (Sandbox Code Playgroud)
但是, ReferenceLoopHandling 内部不可用options.JsonSerializerOptions。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentNHibernate" Version="2.1.2" />
<PackageReference Include="FullContact.Contacts.API" Version="1.0.3" />
<PackageReference Include="Google.Cloud.Storage.V1" Version="2.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Cors" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.5.0" />
<PackageReference Include="MySql.Data" Version="8.0.17" />
<PackageReference Include="piplclient" Version="5.0.9" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.5.0" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
Xue*_*hen 42
作为改进 ASP.NET Core 共享框架工作的一部分,Json.NET已从 ASP.NET Core 共享框架中删除。如果您的应用程序使用 Newtonsoft.Json 特定功能(例如 JsonPatch 或转换器),或者如果它格式化Newtonsoft.Json 特定类型,则您的应用程序可能需要此参考。
在 ASP.NET Core 3.0 项目中使用 Json.NET:
添加对Microsoft.AspNetCore.Mvc.NewtonsoftJson的包引用。
更新Startup.ConfigureServices调用AddNewtonsoftJson。
services.AddMvc()
.AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)
这将设置 MVC 并将其配置为使用 Json.NET 而不是新的 API。并且 AddNewtonsoftJson 方法有一个重载,允许您像在 ASP.NET Core 2.x 中使用 AddJsonOptions 一样配置 Json.NET 选项。
services.AddMvc()
.AddNewtonsoftJson(options =>
{
options.SerializerSettings = new JsonSerializerSettings() { … };
});
Run Code Online (Sandbox Code Playgroud)
参考:
jav*_*asd 30
截至 2020 年 3 月,默认的 JSON 序列化程序不支持引用循环处理。
为了处理该问题,您必须首先Microsoft.AspNetCore.Mvc.NewtonsoftJson在Nuget包管理器中安装较旧的 JSON 序列化程序(在较旧版本的 .NET Core 中使用)。
用法非常简单:
services.AddMvc().AddNewtonsoftJson(o =>
{
o.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
或者像这样,如果您使用的是简单的 Web API:
services.AddControllers().AddNewtonsoftJson(o =>
{
o.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
小智 6
如上所述,您需要安装Microsoft.AspNetCore.Mvc.NewtonsoftJson、Microsoft.AspNetCore.SignalR.Protocols.Newtonsoft包并使用AddNewtonsoftJsonProtocol进行配置,以便仍然使用 Newtonsoft 而不是 System.Text.Json (ReferenceLoopHandling 尚不可用)
对于SignalR,它将是
services.AddSignalR().AddNewtonsoftJsonProtocol(p =>
{
p.PayloadSerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27008 次 |
| 最近记录: |