Novidades do ASP.NET Core 3.0: mudanças no suporte a JSON

Renato Groffe
2 min readMay 11, 2019

--

Ao criar um novo projeto baseado no ASP.NET Core 3.0 muitos Desenvolvedores devem ter notado ligeiras diferenças em relações a versões anteriores, como a presença de uma referência para o package Microsoft.AspNetCore.Mvc.NewtonsoftJson no arquivo .csproj:

Além de uma chamada ao método AddNewtonsoftJson em ConfigureServices na classe Startup:

Esta abordagem ainda continua com o Preview 5 do ASP.NET Core 3.0 (versão mais atual quando da publicação deste artigo), muito embora deva ficar de lado em releases posteriores.

Existe de fato todo um trabalho para que o projeto Newtonsoft.Json deixe de representar a opção default para a manipulação de JSON dentro do ASP.NET Core, com a substituição do mesmo por recursos mais performáticos que integram agora um novo namespace: System.Text.Json.

Durante o Microsoft Build 2019 tivemos uma postagem no blog oficial do ASP.NET na qual foi informada a possibilidade de uso de um novo serializer baseado em System.Text.Json (não havia esta alternativa até o Preview 4). Inclusive um comparativo com cenários de serialização e deserialização foi publicado, de forma a destacar os ganhos que a nova opção traz em relação ao projeto Newtonsoft.Json:

Diante disso, como podemos configurar um projeto para que utilize recursos que integram o namespace System.Text.Json na manipulação de dados no padrão JSON?

O primeiro passo consiste em remover o package Microsoft.AspNetCore.Mvc.NewtonsoftJson do projeto, algo que pode ser feito por meio da seguinte instrução:

dotnet remove package Microsoft.AspNetCore.Mvc.NewtonsoftJson

A classe Startup também passará por alterações:

  • A chamada a AddNewtonsoftJson será retirada do método ConfigureServices;
  • No método AddControllers é possível especificar as opções de serialização para o formato JSON. No caso do exemplo da próxima listagem, a propriedade WriteIndented do objeto associado a SerializerOptions foi configurada de forma que os retornos em JSON produzidos pelo projeto venham indentados. A propriedade SerializerOptions contém uma instância de JsonSerializerOptions (namespace System.Text.Json.Serialization), novo serializador JSON que integra o .NET Core 3.0.

O resultado ao acessar um projeto configurado para uso do novo serializer em nada irá diferir de versões anteriores (que empregavam o pacote Newtonsoft.Json). É o que demonstra a imagem a seguir:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet