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

DESAFIO - APIGOT

Decidi encapsular o carregamento apenas para apresentação do exercicio:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ScreenSound.Models
{
    using System.Text.Json.Serialization;
    using System.Collections.Generic;
    using System.Text.Json;

    public class Personagem_GOT
    {
        [JsonPropertyName("url")]
        public string Url { get; set; }

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

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

        [JsonPropertyName("culture")]
        public string Cultura { get; set; }

        [JsonPropertyName("born")]
        public string Nascimento { get; set; }

        [JsonPropertyName("died")]
        public string Falecimento { get; set; }

        [JsonPropertyName("titles")]
        public List<string> Titulos { get; set; }

        [JsonPropertyName("aliases")]
        public List<string> Apelidos { get; set; }

        [JsonPropertyName("father")]
        public string Pai { get; set; }

        [JsonPropertyName("mother")]
        public string Mae { get; set; }

        [JsonPropertyName("spouse")]
        public string Conjuge { get; set; }

        [JsonPropertyName("allegiances")]
        public List<string> Aliancas { get; set; }

        [JsonPropertyName("books")]
        public List<string> Livros { get; set; }

        [JsonPropertyName("povBooks")]
        public List<string> PovLivros { get; set; }

        [JsonPropertyName("tvSeries")]
        public List<string> SeriesTV { get; set; }

        [JsonPropertyName("playedBy")]
        public List<string> InterpretadoPor { get; set; }


        public static async Task<Personagem_GOT> CarregarPersonagemPorID(int IdPersonagem)
        {
            using (HttpClient client = new HttpClient())
            {
                try
                {
                    string resposta = await client.GetStringAsync($"https://www.anapioficeandfire.com/api/characters/{IdPersonagem}");
                    return JsonSerializer.Deserialize<Personagem_GOT>(resposta);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Temos um problema: {ex.Message}");
                    return null;
                }
            }
        }
    }

}

Program:

using ScreenSound.Models;

var MeuPersonagem = Personagem_GOT.CarregarPersonagemPorID(16).Result;

Console.WriteLine(MeuPersonagem.Nome);

Console: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Lucas! Tudo certo?

O código que você compartilhou está funcionando corretamente, pois está exibindo o nome "Margaery Tyrell" no console, o que indica que a deserialização do JSON foi bem-sucedida.

Aqui estão algumas dicas para refatorar ou expandir seu código:

  1. Async/Await: Em vez de usar .Result, é mais seguro e eficiente usar await para chamadas assíncronas. Isso evita possíveis bloqueios na aplicação.

    var MeuPersonagem = await Personagem_GOT.CarregarPersonagemPorID(16);
    

    Lembre-se de que a função Main precisa ser assíncrona para usar await:

    static async Task Main(string[] args)
    {
        var MeuPersonagem = await Personagem_GOT.CarregarPersonagemPorID(16);
        Console.WriteLine(MeuPersonagem.Nome);
    }
    
  2. Tratamento de Erros: Você já está capturando exceções, o que é ótimo. Considere logar ou tratar erros de forma mais detalhada se necessário.

Bons estudos!

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