1
resposta

Curso: Java: consumindo API, gravando arquivos e lidando com erros. String.length()

Bom dia, Fiz o mesmo código que a professora, inclusive, através do Git. Porém o erro permanece. Digite um filme para busca: Matrix https://www.omdbapi.com/?t=Matrix&apikey=MinhaChave {"Title":"Matrix","Year":"1993","Rated":"N/A","Released":"01 Mar 1993","Runtime":"60 min","Genre":"Action, Drama, ... //código omitido

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because the return value of "br.com.alura.screenmatch.modelos.TituloOmdb.year()" is null at br.com.alura.screenmatch.modelos.Titulo.(Titulo.java:24) at br.com.alura.screenmatch.principal.PrincipalComBusca.main(PrincipalComBusca.java:53)

public class Titulo implements Comparable<Titulo> {
    @SerializedName("Title")
    private String nome;
    @SerializedName("Year")
    private int anoDeLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;

    public Titulo(String nome, int anoDeLancamento) {
        this.nome = nome;
        this.anoDeLancamento = anoDeLancamento;
    }

    public Titulo(TituloOmdb meuTituloOmdb) {
        this.nome = meuTituloOmdb.title();

        if(meuTituloOmdb.year().length() > 4) {
            throw new ErroDeConversaoDeAnoException("Não consegui converter o ano " +
                    "porque tem mais de 04 caracteres.");
        }
        this.anoDeLancamento = Integer.valueOf(meuTituloOmdb.year());
        this.duracaoEmMinutos = Integer.valueOf(meuTituloOmdb.runtime().substring(0, 2));
    }

     //código omitido

    }
}
1 resposta

as variaveis do json estao comecando com a primeira letra maiscula, e as variaveis da classe TituloOmdb nao. entao o o valor do json, nao é atribuido e por isso o valor do ano fica null, provocando o erro. Corrija esses nomes do json.

Caso voce queria manter como esta, tem que colocar a anotacao @JsonProperty("Year") em todos os atributos com o nome igual esta no json que o problema vai ser solucionado.