Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos

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); } }

1 respuesta

Hola Yolima, espero que estés bien

Parece que estás en el proceso de consumir una API y deserializar los datos JSON en objetos Java utilizando Jackson en tu proyecto Spring. Ya tienes una buena estructura con la interfaz IConvierteDatos y la clase ConvierteDatos para manejar la deserialización. También has configurado tu clase principal ScreenmatchApplication para implementar CommandLineRunner.

Aquí hay algunas cosas que podrías verificar o considerar para asegurarte de que todo funcione correctamente:

  1. Dependencia de Jackson: Asegúrate de que la dependencia de Jackson esté correctamente añadida en tu archivo pom.xml. Debería verse algo así:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.0</version> <!-- Asegúrate de usar una versión compatible -->
    </dependency>
    
  2. Clase ConsumoAPI: Esta clase parece encargarse de obtener los datos JSON de la API. Asegúrate de que esté correctamente implementada para hacer la solicitud HTTP y devolver el JSON como una cadena.

  3. Uso de JsonAlias y JsonIgnoreProperties: Has utilizado correctamente estas anotaciones en tu record DatosSerie. Esto ayudará a mapear los campos JSON a los campos de tu objeto Java.

  4. Prueba de la aplicación: Al ejecutar tu aplicación, verifica que la salida en la consola sea la esperada. Si hay algún error, revisa los mensajes de excepción para identificar posibles problemas.

  5. Verificación del API Key: Asegúrate de que tu API key para OMDB es válida y que estás utilizando la URL correcta para obtener los datos.

Si todo está configurado correctamente, deberías poder ver los datos deserializados de la serie en la salida de la consola. Si encuentras algún problema específico, revisa los mensajes de error para obtener más pistas sobre lo que podría estar fallando.

Espero que esto te ayude a avanzar con tu proyecto. ¡Bons estudios!