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.
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.
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:
JSON de Exemplo:
{
    "info": {
        "title": "Nome do Jogo",
        "thumb": "URL da Imagem"
    }
}
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)
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!