Ao trabalhar com APIs em C#, é comum receber respostas no formato JSON. A desserialização permite transformar essa cadeia de caracteres em objetos manipuláveis no código. Este guia demonstra como realizar essa conversão de forma eficiente.
Primeiramente, é necessário criar classes que espelhem a estrutura do JSON. Em vez de definir manualmente, pode-se utilizar ferrmaentas online para gerar automaticamente as classes C# a partir do JSON fornecido. Considere o seguinte exemplo de dados JSON retornados por uma API de rastreamento:
{
"resultado": "sucesso",
"codigoRastreio": "BR9876543210",
"transportadora": "Correios",
"status": "emTransito",
"eventos": [
{
"data": "2023-10-05 14:30:00",
"descricao": "Objeto postado",
"local": "São Paulo - SP"
},
{
"data": "2023-10-06 09:15:00",
"descricao": "Em trânsito para destino",
"local": "Centro de Distribuição"
}
]
}
As classes correspondentes em C# podem ser estruturadas assim:
public class RespostaRastreio
{
public string Resultado { get; set; }
public string CodigoRastreio { get; set; }
public string Transportadora { get; set; }
public string Status { get; set; }
public List<eventorastreio> Eventos { get; set; }
}
public class EventoRastreio
{
public string Data { get; set; }
public string Descricao { get; set; }
public string Local { get; set; }
}
</eventorastreio>
Para realizar a desserialização, utilize a biblioteca Newtonsoft.Json. Adicione a referência ao projeto via NuGet com o comando:
Install-Package Newtonsoft.Json
Com a biblioteca integrada, o processo de conversão é simplificado. Veja um exemplo completo em um aplicativo console:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ExemploJson
{
class Program
{
static void Main(string[] args)
{
string jsonEntrada = "{\"resultado\":\"sucesso\",\"codigoRastreio\":\"BR9876543210\",\"transportadora\":\"Correios\",\"status\":\"emTransito\",\"eventos\":[{\"data\":\"2023-10-05 14:30:00\",\"descricao\":\"Objeto postado\",\"local\":\"São Paulo - SP\"},{\"data\":\"2023-10-06 09:15:00\",\"descricao\":\"Em trânsito para destino\",\"local\":\"Centro de Distribuição\"}]}";
RespostaRastreio dadosRastreio = JsonConvert.DeserializeObject<respostarastreio>(jsonEntrada);
Console.WriteLine($"Transportadora: {dadosRastreio.Transportadora}");
Console.WriteLine($"Status: {dadosRastreio.Status}");
foreach (var evento in dadosRastreio.Eventos)
{
Console.WriteLine($"[{evento.Data}] {evento.Descricao} - {evento.Local}");
}
}
}
}
</respostarastreio>
Ao executar, o código exibe os dados extraídos do JSON, demonstrando como acessar propriedades individuais e iterar sobre coleções aninhadas. A desserialização mapeia automaticamente os campos do JSON para as propriedades das clases definidas.