Trabalhando com JSON em C#: parsing e serialização para iniciantes

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 troca de dados, amplamente utilizado em desenvolvimento web, arquivos de configuração e APIs. Se você está começando a estudar C# e .NET, saber trabalhar com JSON é uma habilidade obrigatória. Neste artigo, vamos abordar como realizar o parsing de JSON (conversão de string em objeto) e a serialização (conversão de objeto em string JSON) usando as ferramentas nativas do .NET e a popular biblioteca Newtonsoft.Json.



Vamos explorar exemplos práticos que ajudarão você a dominar rapidamente os conceitos-chave. Todo o código é escrito em C# (.NET 6+), mas funcionará em versões anteriores com alterações mínimas.



1. Trabalho nativo com JSON: namespace System.Text.Json



A partir do .NET Core 3.0, a Microsoft introduziu o namespace de alto desempenho System.Text.Json. Ele é integrado à plataforma e não requer a instalação de pacotes adicionais. Esta é a ferramenta principal para trabalhar com JSON em aplicações .NET modernas.



1.1 Serialização de objeto para JSON



Serialização é o processo de converter um objeto C# em uma string JSON. Vamos considerar uma classe simples Person:



public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string Email { get; set; }}

// Usovar person = new Person{ Name = "João Silva", Age = 30, Email = "joao@example.com"};

string json = System.Text.Json.JsonSerializer.Serialize(person);Console.WriteLine(json);


Resultado da execução:



{"Name":"João Silva","Age":30,"Email":"joao@example.com"}


Por padrão, as propriedades são serializadas com nomes idênticos aos nomes das propriedades em C#. Você pode configurar a formatação usando JsonSerializerOptions, por exemplo, para tornar o JSON mais legível:



var options = new System.Text.Json.JsonSerializerOptions{    WriteIndented = true};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);


Agora a saída será com indentação:



{  "Name": "João Silva",  "Age": 30,  "Email": "joao@example.com"}


1.2 Desserialização (parsing) de JSON para objeto



O processo inverso — converter uma string JSON em um objeto C# — é chamado de desserialização. Use o método JsonSerializer.Deserialize<T>():



string jsonString = @"{""Name"":""Maria Pereira"",""Age"":25,""Email"":""maria@example.com""}";

Person? person = System.Text.Json.JsonSerializer.Deserialize<Person>(jsonString);

if (person != null){ Console.WriteLine($"Nome: {person.Name}, Idade: {person.Age}");}


Importante: se o JSON não corresponder à estrutura da classe, uma exceção JsonException será lançada. Para um trabalho seguro, use tratamento de exceções ou verifique se é null.



1.3 Trabalhando com JsonDocument para JSON arbitrário



Às vezes, a estrutura do JSON não é conhecida antecipadamente ou você deseja ler dados sem criar classes. Para isso, use JsonDocument:



string jsonText = @"{""product"":""Notebook"",""price"":75000,""inStock"":true}";

using JsonDocument doc = JsonDocument.Parse(jsonText);JsonElement root = doc.RootElement;

string product = root.GetProperty("product").GetString();int price = root.GetProperty("price").GetInt32();bool inStock = root.GetProperty("inStock").GetBoolean();

Console.WriteLine($"{product}: {price} reais (em estoque: {inStock})");


JsonDocument implementa IDisposable, portanto, use obrigatoriamente using para liberar recursos.



2. Biblioteca clássica Newtonsoft.Json (Json.NET)



Antes do surgimento do System.Text.

Blogs

Book Recommendations