1
resposta

[Projeto] Exercícios para Desserializar

Classe País

using System.ComponentModel;
using System.Text.Json.Serialization;

namespace Paises.Modelos;
internal class Pais
{
    [JsonPropertyName("nome")]
    public string Nome { get; set; }
    [JsonPropertyName("capital")]
    public string Capital { get; set; }
    [JsonPropertyName("idioma")]
    public string Idioma { get; set; }
    [JsonPropertyName("populacao")]
    public int Populacao { get; set; }

    public void ExibirDetalhesDoPais()
    {
        Console.WriteLine($"País: {Nome}");
        Console.WriteLine($"Capital: {Capital}");
        Console.WriteLine($"Idioma: {Idioma}");
        Console.WriteLine($"População: {Populacao.ToString("N0")}"); // A propriedade .ToString especifica a formatação que quero exibir o dado da população. No caso, vai exibir separadores (.) a cada 3 dígitos e o termo "N0" indique que não vai exibir casas decimais. Para exibir quantidade específica de casas decimais, basta usa "NX", onde X é a quantidade de casas decimais.
    }
}

Program Países

using System.Text.Json;
using System.Text.Json.Serialization;
using Paises.Modelos;

string endPoint = "https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Paises.json";

using (HttpClient client = new HttpClient())
{
    try
    {
        string resposta = await client.GetStringAsync(endPoint);
        var paises = JsonSerializer.Deserialize<List<Pais>>(resposta);
        foreach (var pais in paises)
        {
            pais.ExibirDetalhesDoPais();
            Console.WriteLine();
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Houe um erro: {ex.Message}.");
    }

}

Classe Carro

using System.Text.Json.Serialization;

namespace Carros.Modelos;
internal class Carro
{
    [JsonPropertyName("marca")]
    public string Marca { get; set; }
    
    [JsonPropertyName("modelo")]
    public string Modelo { get; set; }
    
    [JsonPropertyName("ano")]
    public int Ano { get; set; }

    [JsonPropertyName("tipo")]
    public string Tipo { get; set; }

    [JsonPropertyName("motor")]
    public string Motor { get; set; }

    [JsonPropertyName("transmissao")]
    public string Transmissao { get; set; }
    
    public void ExibirDetalhesDoCarro()
    {
        Console.WriteLine($"Marca: {Marca}");
        Console.WriteLine($"Modelo: {Modelo}");
        Console.WriteLine($"Ano: {Ano}");
        Console.WriteLine($"Tipo: {Tipo}");
        Console.WriteLine($"Motor: {Motor}");
        Console.WriteLine($"Transmissão: {Transmissao}");
    }
}

Program Carros

using Carros.Modelos;
using System.Text.Json;

string endPoint = "https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Carros.json";

using (HttpClient client = new HttpClient())
{
    try
    {
        string resposta = await client.GetStringAsync(endPoint);
        var carros = JsonSerializer.Deserialize<List<Carro>>(resposta);
        Console.WriteLine($"Existem {carros.Count} carros na lista:\n");
    
        foreach (var carro in carros)
        {
            carro.ExibirDetalhesDoCarro();
            Console.WriteLine("\n-----------\n");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

Classe Livro:

using System.Text.Json.Serialization;

namespace Livros.Modelos;
internal class Livro
{
    [JsonPropertyName("titulo")]
    public string Titulo { get; set; }

    [JsonPropertyName("autor")]
    public string Autor { get; set; }

    [JsonPropertyName("ano_publicacao")]
    public int AnoPublicacao { get; set; }

    [JsonPropertyName("genero")]
    public string Genero { get; set; }

    [JsonPropertyName("paginas")]
    public int Paginas { get; set; }

    [JsonPropertyName("editora")]
    public string Editora { get; set; }

    public void ExibirDetalhesDoLivro()
    {
        Console.WriteLine($"Título: {Titulo}");
        Console.WriteLine($"Autor: {Autor}");
        Console.WriteLine($"Ano de publicação: {AnoPublicacao}");
        Console.WriteLine($"Gênero: {Genero}");
        Console.WriteLine($"Quantidade de páginas: {Paginas}");
        Console.WriteLine($"Editora: {Editora}");
    }
}

Program Livros:

using Livros.Modelos;
using System.Text.Json;

string endPoint = "https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Livros.json";

using (HttpClient client = new HttpClient())
{
    try
    {
        string resposta = await client.GetStringAsync(endPoint);
        var livros = JsonSerializer.Deserialize<List<Livro>>(resposta);
    
        foreach (var livro in livros)
        {
            livro.ExibirDetalhesDoLivro();
            Console.WriteLine("\n************\n");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
1 resposta

Oi, Fábio! Tudo bom?

Excelente! Siga praticando com os desafios e sempre compartilhe conosco.

Você soube aplicar a serialização com System.Text.Json de forma eficiente, aproveitou o uso de JsonPropertyName para mapear corretamente os campos do JSON e entendeu como o método ExibirDetalhes era essencial para organizar e apresentar os dados de maneira clara no console.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!