JsonIgnore属性保持ASP.NET Core 3中的序列化属性

时间:2019-10-22 07:44:10

标签: c# json asp.net-core json.net asp.net-core-3.0

我最近将我的API项目更新为ASP.NET Core3。此后,[JsonIgnore]属性不起作用:

public class Diagnostico
{
    [JsonIgnore]
    public int TipoDiagnostico { get; set; }

    [JsonIgnore]
    public int Orden { get; set; }

    [JsonIgnore]
    public DateTime? FechaInicio { get; set; }

    public string TipoCodificacion { get; set; }

    public string Codigo { get; set; }

    public string Descripcion { get; set; }
}

所有类的属性都将被序列化。 API端点位于.NET Core 3中,但所有逻辑均位于.NET Standard 2.1中。我已经意识到序列化程序已从Newtonsoft.Json更改为 System.Text.Json。该软件包在.NET Standard 2.1中不可用(仅在.NET Core中有效),因此要在我正在使用[JsonIgnore]的.NET Standard项目内的模型中使用Newtonsoft.Json

2 个答案:

答案 0 :(得分:2)

[JsonIgnore]是JSON.NET属性,新的System.Text.Json序列化程序将不会使用。

由于您的应用程序是ASP.NET Core 3.0,System.Text.Json将默认使用。如果要继续使用JSON.NET批注,则必须在ASP.NET Core 3中使用JSON.NET

就像将.AddNewtonsoftJson()添加到您的MVC或WebApi Builder一样简单

services.AddMvc()
    .AddNewtonsoftJson();

services.AddControllers()
    .AddNewtonsoftJson();

适用于WebAPI的应用程序。

答案 1 :(得分:1)

对于您的.Net Standard项目,请从nuget中获取System.Text.Json包

https://www.nuget.org/packages/System.Text.Json

因此您可以使用System.Text.Json.Serialization.JsonIgnoreAttribute代替Newtonsoft.Json.JsonIgnoreAttribute。