Processamento de JSON em C# (.NET): guia completo

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

Processamento de JSON em C# (.NET): guia completo

JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web, APIs e arquivos de configuração. No ecossistema C# (.NET), existem duas abordagens principais para trabalhar com JSON: a biblioteca clássica Newtonsoft.Json (também conhecida como Json.NET) e a moderna biblioteca embutida System.Text.Json, introduzida no .NET Core 3.0 e superiores. Neste artigo, abordaremos detalhadamente ambas as ferramentas, suas capacidades, sintaxe e melhores práticas.



1. Newtonsoft.Json (Json.NET)

A biblioteca Newtonsoft.Json foi por muito tempo o padrão de facto para trabalhar com JSON em C#. Ela oferece uma API rica, suporte a LINQ to JSON, configuração flexível de serialização e desserialização. Pode ser instalada via NuGet:

Install-Package Newtonsoft.Json


1.1. Serialização e desserialização

As operações mais básicas são converter um objeto em JSON e vice-versa. Vamos considerar a classe Person:

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


Serialização (objeto → JSON):

var person = new Person { Name = "Ivan", Age = 30, Email = "ivan@example.com" };string json = JsonConvert.SerializeObject(person, Formatting.Indented);Console.WriteLine(json);


Desserialização (JSON → objeto):

string json = @"{""Name"":""Maria"",""Age"":25,""Email"":""maria@example.com""}";Person person = JsonConvert.DeserializeObject<Person>(json);Console.WriteLine(person.Name); // Maria


1.2. Trabalhando com JObject e JArray

A biblioteca Newtonsoft.Json suporta LINQ to JSON, permitindo acessar dinamicamente elementos JSON sem criar classes fortemente tipadas.

string json = @"{""products"":[{""id"":1,""name"":""Notebook""},{""id"":2,""name"":""Mouse""}]}";JObject obj = JObject.Parse(json);JArray products = (JArray)obj["products"];

foreach (var product in products){ int id = (int)product["id"]; string name = (string)product["name"]; Console.WriteLine($"ID: {id}, Name: {name}");}


1.3. Atributos para configuração da serialização

Com atributos, é possível controlar os nomes das propriedades no JSON, ignorar campos, definir valores padrão e muito mais.

public class User{    [JsonProperty("user_name")]    public string Name { get; set; }

[JsonIgnore] public string Password { get; set; }

[JsonProperty("registration_date")] public DateTime CreatedAt { get; set; }}

// Na serialização, Password será ignorado e Name se tornará "user_name"string json = JsonConvert.SerializeObject(user);


2. System.Text.Json (biblioteca embutida do .NET)

A partir do .NET Core 3.0, a Microsoft apresentou sua própria biblioteca System.Text.Json, otimizada para desempenho e consumo mínimo de memória. Ela não requer a instalação de pacotes adicionais (exceto algumas extensões).



2.1. Serialização e desserialização

O trabalho com System.Text.Json é semelhante ao Newtonsoft.Json, mas possui algumas diferenças na sintaxe e no comportamento padrão (por exemplo, diferenciação de maiúsculas e minúsculas).

using System.Text.Json;

var person = new Person { Name = "Alexei", Age = 28, Email = "alex@example.com" };string json = JsonSerializer.Serialize(person, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);

// Desserializaçãostring jsonInput = @"{""Name"":""Olga"",""Age"":32,""Email"":""olga@example.com""}";Person deserializedPerson = JsonSerializer.Deserialize<Person>(jsonInput);


Importante! Por padrão, o System.Text.Json é

Recommendations