Agora é com você! Faça o mesmo procedimento que eu fiz na aula, escrevendo a sua lista de filmes em json.
Neste desafio, busquei segregar em classes distintas:
package exceptions;
public class ErroBuscaFilmeException extends RuntimeException {
public ErroBuscaFilmeException(String msg) {
super(msg);
}
}
package Entities;
public class Filme {
private String nomeFilme;
private Integer anoDeLancamento;
private Integer duracaoEmMinutos;
@Override
public String toString() {
return "(nome = " + nomeFilme +
", anoDeLancamento = " + anoDeLancamento +
", duração(em minutos) = " + duracaoEmMinutos + ")";
}
public String getNomeFilme() {
return nomeFilme;
}
public void setNomeFilme(String nomeFilme) {
this.nomeFilme = nomeFilme;
}
public Integer getAnoDeLancamento() {
return anoDeLancamento;
}
public void setAnoDeLancamento(Integer anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public Integer getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public void setDuracaoEmMinutos(Integer duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
}
package Entities;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class AccessOmdb extends Filme {
public AccessOmdb(String filme) throws IOException, InterruptedException {
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();
String endereco = "http://www.omdbapi.com/?t=" + filme.replace(" ", "+") + "&apikey=2669****";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endereco))
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
System.out.println(json);
Filme meuFilme = gson.fromJson(json, Filme.class);
System.out.println(meuFilme);
FileWriter escrita = new FileWriter("filmes.json");
escrita.write(gson.toJson(json));
escrita.close();
System.out.println("O programa finalizou corretamente");
}
}
package Entities;
public record FilmeOmdb(String nomeFilme, String anoDeLancamento, String duracaoEmMinutos) {
}
package Main;
import Entities.AccessOmdb;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
AccessOmdb filme = new AccessOmdb("");
System.out.println("Insira o nome do filme: ");
filme.setNomeFilme(sc.nextLine());
try {
AccessOmdb localizaFilme = new AccessOmdb(filme.getNomeFilme());
} catch (RuntimeException e) {
System.out.println("Ocorreu erro na consulta!");
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
sc.close();
}
}
Gerado o arquivo JSON e as informações são salvas no arquivo:
Porém ocorre alguns erros anterior a geração do arquivo e em seguida é retornado o Nome do Filme, mas na apresentação das informações do Record, elas retornam vazias.