1/2
using System.Text.Json.Serialization;
namespace Desafios;
internal class Livro : IDetalhavel
{
[JsonPropertyName("titulo")]
public string? Titulo { get; set; }
[JsonPropertyName("autor")]
public string? Autor { get; set; }
[JsonPropertyName("ano_publicacao")]
public int AnoDaPublicação { get; set; }
[JsonPropertyName("genero")]
public string? Genero { get; set; }
[JsonPropertyName("paginas")]
public int QtdPaginas { get; set; }
[JsonPropertyName("editora")]
public string? Editora { get; set; }
public void Detalhes()
{
Console.WriteLine($"{Titulo} de {Autor} tem {QtdPaginas} páginas. A obra do gênero {Genero} foi lançada em {AnoDaPublicação} pela editora {Editora}.\n");
}
}
using System.Text.Json.Serialization;
namespace Desafios;
internal class Carro : IDetalhavel
{
[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; }
[JsonPropertyName("autonomia")]
public string? Autonomia { get; set; }
public void Detalhes()
{
Console.WriteLine($"\n{Marca} {Modelo} {Ano}, {Tipo}, {Motor}, {Transmissao}{(Autonomia is not null ? " " + Autonomia : null)}.");
}
}
using System.Text.Json.Serialization;
namespace Desafios;
internal class Pais : IDetalhavel
{
[JsonPropertyName("nome")]
public string? Nome { get; set; }
[JsonPropertyName("capital")]
public string? Capital { get; set; }
[JsonPropertyName("populacao")]
public long Populacao { get; set; }
[JsonPropertyName("continente")]
public string? Continente { get; set; }
[JsonPropertyName("idioma")]
public string? Idioma { get; set; }
public void Detalhes()
{
Console.WriteLine("\n" + Nome);
Console.WriteLine(Capital);
Console.WriteLine(Populacao);
Console.WriteLine(Continente);
Console.WriteLine(Idioma);
}
}
using System.Text.Json.Serialization;
namespace Desafios;
internal class Filme : IDetalhavel
{
[JsonPropertyName("id")]
public string? Identificacao { get; set; }
[JsonPropertyName("rank")]
public string? Ranking { get; set; }
[JsonPropertyName("title")]
public string? Titulo { get; set; }
[JsonPropertyName("fullTitle")]
public string? TituloCompleto { get; set; }
[JsonPropertyName("year")]
public string? Ano { get; set; }
[JsonPropertyName("image")]
public string? ImagemLink { get; set; }
[JsonPropertyName("crew")]
public string? ElencoLista { get; set; }
[JsonPropertyName("imDbRating")]
public string? NotaImDb { get; set; }
[JsonPropertyName("imDbRatingCount")]
public string? QuantidadeDeAvaliacoesImDb { get; set; }
public void Detalhes()
{
Console.WriteLine("\n" + Identificacao.Trim());
Console.WriteLine(Ranking.Trim());
Console.WriteLine(Titulo.Trim());
Console.WriteLine(TituloCompleto.Trim());
Console.WriteLine(Ano.Trim());
Console.WriteLine(ImagemLink.Trim());
Console.WriteLine(ElencoLista.Trim());
Console.WriteLine(NotaImDb.Trim());
Console.WriteLine(QuantidadeDeAvaliacoesImDb.Trim() + "\n");
}
}
using System.Text.Json;
namespace Desafios;
internal class JsonDesserializado
{
public static void Detalhar<T>(string endPointLink ) where T : IDetalhavel
{
using HttpClient client = new();
try
{
string resposta = client.GetStringAsync(endPointLink).GetAwaiter().GetResult();
var registros = JsonSerializer.Deserialize<List<T>>(resposta)!;
foreach (var registro in registros )
{
registro.Detalhes();
}
}
catch (Exception ex)
{
Console.WriteLine($"Temos um problema: {ex}");
}
}
}