Desserialização de Dados JSON em C# com a Biblioteca Newtonsoft.Json

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.

Tags: C# JSON Newtonsoft.Json Desserialização API

Publicado em 7-7 18:13