El modelo de datos (Record)
public record Pelicula(String title,
int episode_id,
String opening_crawl,
String director) {
}
Clase de Consulta
import com.google.gson.Gson;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaPelicula {
public Pelicula buscarPelicula(int numeroDePelicula) {
URI direccion = URI.create("https://swapi.dev/api/films/" + numeroDePelicula + "/");
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(direccion)
.build();
try {
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Pelicula.class);
} catch (Exception e) {
throw new RuntimeException("No encontré esa película.");
}
}
}
Clase para Generar el Archivo
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeneradorDeArchivo {
public void guardarJson(Pelicula pelicula) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter escritura = new FileWriter(pelicula.title() + ".json");
escritura.write(gson.toJson(pelicula));
escritura.close();
}
}
Clase Principal con el Menú
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner lectura = new Scanner(System.in);
ConsultaPelicula consulta = new ConsultaPelicula();
System.out.println("Escriba el número de la película de Star Wars que desea consultar (1-6):");
try {
var numeroDePelicula = Integer.valueOf(lectura.nextLine());
Pelicula pelicula = consulta.buscarPelicula(numeroDePelicula);
System.out.println(pelicula);
GeneradorDeArchivo generador = new GeneradorDeArchivo();
generador.guardarJson(pelicula);
System.out.println("Archivo generado correctamente.");
} catch (NumberFormatException e) {
System.out.println("Número no encontrado: " + e.getMessage());
} catch (RuntimeException | IOException e) {
System.out.println(e.getMessage());
System.out.println("Finalizando la aplicación.");
}
}
}