Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: hora da prática - Atividade 02

Pais.cs

using System.Text.Json.Serialization;

namespace Mapa.Modelos;
class Pais {

    [JsonPropertyName("nome")]
    public string? Nome {get;set;}

    [JsonPropertyName("capital")]
    public string? Capital {get;set;}

    [JsonPropertyName("continente")]
    public string? Continente {get;set;}

    [JsonPropertyName("idioma")]
    public string? Idioma {get;set;}

    [JsonPropertyName("populacao")]
    public long Populacao {get;set;}

    public void ExibirDetalhes() {
       Console.WriteLine();
       Console.WriteLine($"Nome do País: {Nome}");
       Console.WriteLine($"Idioma falado: {Idioma}");
       Console.WriteLine($"Capital: {Capital}");
       Console.WriteLine($"População: {Populacao.ToString("")} habitantes.");
       Console.WriteLine($"Continente: {Continente}");
       Console.WriteLine(); 
    }
}

Program.cs

using System.Text.Json;
using Mapa.Modelos;

Console.Clear();
using (HttpClient client = new()) {
    try {
        var response = await client.GetStringAsync("https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Paises.json");
        var listaPaises = JsonSerializer.Deserialize<List<Pais>>(response);
        listaPaises!.ForEach(p => p.ExibirDetalhes());

    }
    catch (Exception ex) {
        Console.WriteLine($"Um erro foi encontrado na requisição: {ex}");
    }
}
1 resposta
solução!

Olá, Diego! Como vai?

Você organizou bem a classe Pais, usando JsonPropertyName para mapear os dados do JSON e separando a exibição no método ExibirDetalhes(). Isso deixa o código mais legível e facilita a manutenção. Também ficou bem legal o uso de JsonSerializer.Deserialize<List<Pais>>(response) junto com o ForEach, mostrando que você já está conectando consumo de API com manipulação de objetos em C#.

Uma dica interessante para o futuro é usar OrderBy() com LINQ para listar os países em ordem alfabética, por exemplo pelo nome. Veja este exemplo:


var paisesOrdenados = listaPaises
    .OrderBy(p => p.Nome)
    .ToList();

paisesOrdenados.ForEach(p => p.ExibirDetalhes());

Esse código ordena a lista pelo campo Nome antes de exibir os dados, o que pode ajudar bastante na visualização das informações.

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