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

Não entendi o InfoJogo

Eu entendi que temos que passar pelo info antes de chegar nos valores "title" e "thumb", porém não entendi como passando no construtor o atributo info do tipo jogo faz tudo acontecer. Se alguém puder me explicar agradeço.

1 resposta
solução!

Oi Victor! Tudo bem?

Sei bem que o conceito pode ser um pouco confuso no início, mas vou tentar explicar de forma simples. Quando você está lidando com JSON e a biblioteca Gson, a desserialização é o processo de converter dados JSON em objetos Kotlin.

No seu caso, o JSON que você está recebendo tem uma estrutura onde as informações do jogo estão aninhadas em uma chave chamada info. Para acessar os valores title e thumb, você precisa primeiro passar por info, que é onde entra a classe InfoJogo.

Vamos ver um exemplo prático para esclarecer:

  1. JSON de Exemplo:

    {
        "info": {
            "title": "Nome do Jogo",
            "thumb": "URL da Imagem"
        }
    }
    
  2. Classe Jogo: Esta classe representa os dados que você realmente quer extrair, ou seja, title e thumb.

    class Jogo(@SerializedName("title") val titulo: String,
               @SerializedName("thumb") val capa: String)
    
  3. Classe InfoJogo: Esta classe é necessária porque o JSON que você recebe tem uma estrutura onde title e thumb estão dentro de info. Assim, InfoJogo atua como um contêiner para o objeto Jogo.

    class InfoJogo(val info: Jogo)
    

Ao criar uma instância de InfoJogo no seu código, você está dizendo ao Gson para mapear a estrutura JSON para um objeto Kotlin que contém outro objeto Kotlin (Jogo). Isso é necessário porque o JSON tem essa camada extra de info.

Então, quando você usa gson.fromJson(json, InfoJogo::class.java), o Gson entende que precisa primeiro criar um objeto InfoJogo, que por sua vez contém um objeto Jogo com os dados title e thumb.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.