ConsumoAPI.java
deserializar el JSON, incluye la dependencia de Jackson en el archivo pom.xml
con la dependencia agregada, dentro del paquete model, es necesario crear el record DatosSerie para modelar los datos que deseamos representar en la aplicación.
DatosSerie.java
package com.aluracursos.screenmatch.model;
import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true) public record DatosSerie( @JsonAlias("Title") String titulo, @JsonAlias("totalSeasons")Integer totalTemporadas, @JsonAlias("imdbRating") String evaluacion) { } Copia el código Necesitaremos deserializar los datos del JSON, representándolos como un objeto del tipo DatosSerie. Para ello, en el paquete service, crearemos la interfaz IConvierteDatos y la clase ConvierteDatos que implementará el método descrito en la misma.
IConvierteDatos.java
package com.aluracursos.screenmatch.service;
public interface IConvierteDatos { T obtenerDatos(String json, Class clase); } Copia el código ComvierteDatos.java
package com.aluracursos.screenmatch.service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvierteDatos implements IConvierteDatos { private ObjectMapper mapper = new ObjectMapper();
@Override
public <T> T obtenerDatos(String json, Class<T> clase) {
try {
return mapper.readValue(json, clase);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
} Copia el código En la clase principal del proyecto, ScreenmatchApplication, realiza la implementación de CommandLineRunner, sobrescribiendo el método run.
ScreenmatchApplication.java
package com.aluracursos.screenmatch;
import com.aluracursos.screenmatch.model.DatosSerie; import com.aluracursos.screenmatch.service.ConsumoAPI; import com.aluracursos.screenmatch.service.ConvierteDatos; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication public class ScreenmatchApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(ScreenmatchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("Primer proyecto Spring sin Web");
var consumoApi = new ConsumoAPI();
//var json = consumoApi.obtenerDatos("https://www.omdbapi.com/?t=game+of+thrones&Season=1&apikey=4fc7c187");
var json = consumoApi.obtenerDatos("https://www.omdbapi.com/?t=game+of+thrones&&apikey=4fc7c187");
System.out.println(json);
// json = consumoApi.obtenerDatos("https://coffee.alexflipnote.dev/random.json"); // System.out.println(json); ConvierteDatos conversor = new ConvierteDatos(); DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class); System.out.println(datos); } } En la clase principal del proyecto, ScreenmatchApplication, realiza la implementación de CommandLineRunner, sobrescribiendo el método run.
ScreenmatchApplication.java
package com.aluracursos.screenmatch;
import com.aluracursos.screenmatch.model.DatosSerie; import com.aluracursos.screenmatch.service.ConsumoAPI; import com.aluracursos.screenmatch.service.ConvierteDatos; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication public class ScreenmatchApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(ScreenmatchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("Primer proyecto Spring sin Web");
var consumoApi = new ConsumoAPI();
//var json = consumoApi.obtenerDatos("https://www.omdbapi.com/?t=game+of+thrones&Season=1&apikey=4fc7c187");
var json = consumoApi.obtenerDatos("https://www.omdbapi.com/?t=game+of+thrones&&apikey=4fc7c187");
System.out.println(json);
// json = consumoApi.obtenerDatos("https://coffee.alexflipnote.dev/random.json"); // System.out.println(json); ConvierteDatos conversor = new ConvierteDatos(); DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class); System.out.println(datos); } }