Атрибут JsonIgnore поддерживает сериализацию свойств в ASP.NET Core 3 - PullRequest
4 голосов
/ 22 октября 2019

Я недавно обновил свой проект API до ASP.NET Core 3. С тех пор атрибуты [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.

1 Ответ

2 голосов
/ 22 октября 2019

[JsonIgnore] является атрибутом JSON.NET и не будет использоваться новым сериализатором System.Text.Json.

Поскольку ваше приложение является ASP.NET Core 3.0, по умолчанию будет использоваться ядро ​​3.0 System.Text.Json. ,Если вы хотите продолжать использовать аннотации JSON.NET, вам нужно использовать JSON.NET в ASP.NET Core 3

Это так же просто, как добавить .AddNewtonsoftJson() в MVC или WebApi Builder

services.AddMvc()
    .AddNewtonsoftJson();

или

services.AddControllers()
    .AddNewtonsoftJson();

для приложений WebAPI-esque.

...