3
respostas

[Dúvida] Retornando Null [ Modelando dados da aplicação ]

depois de migrar para a classe principal, está me retornando NULL `ackage br.com.alura.principal;

import br.com.alura.model.DadosSerie; import br.com.alura.model.DadosTemporadas; import br.com.alura.service.ConsumoAPI; import br.com.alura.service.ConverteDados;

import java.util.ArrayList; import java.util.List; import java.util.Scanner;

public class Principal { private Scanner leitura = new Scanner(System.in);

private final String ENDERECO = "https://www.omdbapi.com/?t=";
private final String API_KEY ="&apikey=6585022c";

private ConsumoAPI consumo = new ConsumoAPI();
private ConverteDados conversor = new ConverteDados();

public void exibeMenu(){
    System.out.println("Digite o nome da serie que deseja buscar: ");
    var nomeSerie = leitura.nextLine();
    var json = consumo.obterDados(ENDERECO + String.valueOf(nomeSerie).replace(" ", "+") + API_KEY);


    DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
    System.out.println(dados);

    List<DadosTemporadas> temporadas = new ArrayList<>();

    for (int i = 1; i <=dados.totaltemporadas() ; i++) {

        json = consumo.obterDados(ENDERECO + String.valueOf(nomeSerie).replace(" ","+") +"&season"+ i + API_KEY);
        DadosTemporadas dadosTemporada = conversor.obterDados(json, DadosTemporadas.class);
        temporadas.add(dadosTemporada);
        System.out.println("DEBUG: JSON recebido para Temporada " + i + ": " + json);
    }
    temporadas.forEach(System.out::println);
    System.out.println(consumo.toString());
}

}`

saida = DadosSerie[titulo=The Rookie, totaltemporadas=7, avaliacao=8.0] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null] DadosTemporadas[numero=null, episodios=null]

era pra estar rodando o Loop certinho

3 respostas

Oi Lucas! Pelo que você descreveu, o problema parece estar na montagem da URL para buscar as temporadas.

No seu loop, a URL está sendo montada assim: ENDERECO + nomeSerie + "&season" + i + API_KEY Só que está faltando o sinal de igual (=) depois de season. Então a URL está indo como &season1, &season2… em vez de &season=1, &season=2, que é o formato correto da API do OMDb.

Correção:

Altere essa linha dentro do for: json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ","+") + "&season=" + i + API_KEY);Além disso, é bom garantir que a classe DadosTemporadas esteja corretamente mapeada com os campos numero e episodios exatamente como retornados no JSON da API (com os mesmos nomes ou usando anotações como @SerializedName se estiver usando Gson).

Muito Obrigado, desculpe a ignorancia kaka

Imagina, Lucas! Que bom que deu certo Se puder, marca como solucionado, por favor! Assim ajuda outras pessoas que tiverem a mesma dúvida.