Trabalhando com JSON em C#: parsing e serialização de objetos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Trabalho com JSON em C#



JSON (JavaScript Object Notation) é um formato leve de intercâmbio de dados amplamente utilizado em aplicações web modernas, APIs e arquivos de configuração. Para um desenvolvedor C#, a capacidade de trabalhar com JSON é uma habilidade essencial, especialmente ao construir clientes REST, microsserviços ou aplicações que interagem com fontes de dados externas.



No ecossistema .NET, existem duas abordagens principais para processar JSON: a biblioteca clássica Newtonsoft.Json (também conhecida como Json.NET) e a biblioteca moderna nativa System.Text.Json, introduzida no .NET Core 3.0 e tornando-se o padrão no .NET 5+. Ambas as bibliotecas permitem realizar duas operações-chave: serialização (converter um objeto C# para uma string JSON) e desserialização (converter uma string JSON de volta para um objeto C#).



Neste artigo, examinaremos detalhadamente ambas as abordagens, aprenderemos a analisar estruturas de dados complexas e revisaremos as melhores práticas para trabalhar com JSON em C#.



1. Operações Básicas: Serialização e Desserialização



1.1 Usando Newtonsoft.Json (Json.NET)



O Newtonsoft.Json tem sido o padrão de facto para trabalhar com JSON no .NET por muitos anos. Para começar, instale o pacote via NuGet:



Install-Package Newtonsoft.Json


Vamos considerar uma classe de exemplo simples:



public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }    public bool IsActive { get; set; }}


Serializando um objeto para JSON:



using Newtonsoft.Json;

User user = new User{ Id = 1, Name = "Ivan Petrov", Email = "ivan@example.com", IsActive = true};

string json = JsonConvert.SerializeObject(user, Formatting.Indented);Console.WriteLine(json);


Resultado da execução:



{  "Id": 1,  "Name": "Ivan Petrov",  "Email": "ivan@example.com",  "IsActive": true}


Desserializando JSON de volta para um objeto:



string jsonString = @"{""Id"":1,""Name"":""Ivan Petrov"",""Email"":""ivan@example.com"",""IsActive"":true}";User deserializedUser = JsonConvert.DeserializeObject<User>(jsonString);Console.WriteLine($"User: {deserializedUser.Name}, Email: {deserializedUser.Email}");


1.2 Usando System.Text.Json



A partir do .NET Core 3.0, a Microsoft introduziu sua própria biblioteca System.Text.Json, que é otimizada para desempenho e não requer dependências externas.



Serialização:



using System.Text.Json;

User user = new User{ Id = 2, Name = "Maria Smirnova", Email = "maria@example.com", IsActive = false};

string json = JsonSerializer.Serialize(user, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);


Desserialização:



string jsonString = @"{""Id"":2,""Name"":""Maria Smirnova"",""Email"":""maria@example.com"",""IsActive"":false}";User deserializedUser = JsonSerializer.Deserialize<User>(jsonString);Console.WriteLine($"User: {deserializedUser.Name}");


2. Trabalhando com Estruturas de Dados Complexas



2.1 Objetos Aninhados e Coleções



O JSON frequentemente contém estruturas aninhadas. Vamos considerar um exemplo com um array de pedidos de um usuário:



public class Order{    public int OrderId { get; set; }    public decimal Amount { get; set; }    public List<string> Items { get; set; }}

public class Customer{ public int CustomerId { get; set; } public string FullName { get; set; } public List<Order> Orders { get; set; }}


Desserializando JSON complexo

Blogs

Book Recommendations