C# - Newtonsoft.Json x System.Text.Json


 Hoje vamos comparar os principais métodos usados para serializar e/ou deserializar objetos JSON motrando a equivalência entre as duas bibliotecas.

A serialização e desserialização de objetos JSON em aplicações Web é uma tarefa comum e pode impactar o desempenho da sua aplicação dependendo do cenário. Para realizar essas tarefas geralmente são usadas as bibliotecas como Newtonsoft.Json e mais recentemente a biblioteca System.Text.Json.

A biblioteca Newtonsoft.Json é uma biblioteca de serialização e desserialização de JSON para a plataforma .NET sendo uma das bibliotecas mais populares e amplamente usadas para trabalhar com JSON em projetos .NET.

Já a biblioteca System.Text.Json é nativa da plataforma .NET e foi introduzida na versão 3.0 do .NET Core e se tornou a biblioteca de serialização e desserialização de JSON padrão a partir do .NET 5.0.

A biblioteca Newtonsoft.Json fornece recursos avançados de serialização e desserialização de objetos JSON, incluindo suporte para tipos genéricos, personalização de serialização, ignorar valores nulos, renomear propriedades, lidar com referências circulares, configurar culturas, trabalhar com datas, entre outros recursos.

Da mesma forma a biblioteca System.Text.Json oferece recursos avançados de serialização e desserialização de objetos JSON, incluindo suporte para tipos genéricos, personalização de serialização, ignorar valores nulos, renomear propriedades, lidar com referências circulares, configurar culturas, trabalhar com datas, entre outros recursos.

Ao contrário de outras bibliotecas de terceiros, como o Newtonsoft.Json, o System.Text.Json é uma biblioteca nativa e de código aberto, o que significa que está disponível em todas as plataformas suportadas pelo .NET, incluindo Windows, Linux e macOS.

O System.Text.Json também é mais rápido em muitos cenários em comparação com outras bibliotecas de serialização e desserialização de JSON, devido à sua arquitetura otimizada para desempenho e baixo uso de memória.

Desta forma tanto o pacote Newtonsoft.Json quanto o System.Text.Json são bibliotecas para serialização e desserialização de objetos JSON em .NET, mas existem algumas diferenças entre elas:

  1. Desempenho: O System.Text.Json é geralmente mais rápido do que o Newtonsoft.Json, especialmente quando se trata de desserialização de grandes volumes de dados.
     
  2. Suporte ao .NET Core: O System.Text.Json é uma biblioteca padrão do .NET Core desde a versão 3.0, enquanto o Newtonsoft.Json é uma biblioteca de terceiros que precisa ser adicionada ao projeto manualmente.
     
  3. Configuração: O Newtonsoft.Json é geralmente considerado mais flexível e fácil de configurar do que o System.Text.Json. Isso ocorre porque o Newtonsoft.Json fornece muitas opções de configuração e personalização.
     
  4. Recursos avançados: O Newtonsoft.Json tem mais recursos avançados do que o System.Text.Json, como serialização personalizada, desserialização de tipos anônimos e suporte a serialização circular. No entanto, esses recursos podem não ser necessários para todas as aplicações.
     
  5. Tamanho do pacote: O System.Text.Json é uma biblioteca padrão do .NET Core e está incluída no pacote básico do .NET, o que significa que não é necessário adicionar uma dependência adicional ao projeto. O Newtonsoft.Json, por outro lado, é uma biblioteca de terceiros e precisa ser adicionado ao projeto manualmente, o que aumenta o tamanho do pacote.

A seguir temos uma equivalência entre os principais comandos usados das duas bibliotecas:

  1. Serialização:
  1. Desserialização:
  1. Ignorar propriedades nulas:
  1. Renomear propriedades:
  1. Converter tipos personalizados:
  1. Configuração de propriedades de serialização:
  1. Anotando classes e propriedades:
  1. Lidando com referências circulares:
  1. Lidando com valores enumerados:
  1. Configuração de formatação:
  1. Configuração de cultura:
  1. Definindo nomes de propriedades com camelCase:
  1. Definindo nomes de propriedades com camelCase:
  1. Trabalhando com datas:
  1. Serialização/Deserialização de tipos genéricos:

Assim, a biblioteca System.Text.Json é uma solução nativa e avançada para trabalhar com JSON na plataforma .NET, oferecendo recursos poderosos e de alto desempenho para serialização e desserialização de objetos JSON.

E estamos conversados ...

"Porque toda a criatura de Deus é boa, e não há nada que rejeitar, sendo recebido com ações de graças. Porque pela palavra de Deus e pela oração é santificada."
1 Timóteo 4:4-5

Referências:


José Carlos Macoratti