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 en el aula: conversión de objetos json

Saludos. Adjunto mi visión del ejercicio, usando maven como gestor de paquetes y dependencias.

PD: Una solución que contemplé para la conversión entre dtos y json es usar mapeadores, y la dependencia Mapstruct. No lo usé por temas de tiempo, perdón :(.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>FirstProgram</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>RELEASE</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
        </dependency>

    </dependencies>

</project>

titulo dto

package Models;

import lombok.NonNull;
import lombok.With;

@With
public record TituloDTO(
        @NonNull
        String title,
        @NonNull
        String year,
        @NonNull
        String runtime
) {
}

contenedor de ejecución

package org.example;

import Models.Pelicula;
import Models.TituloDTO;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;

public class Busqueda {

    private static Scanner entrada = new Scanner(System.in).useDelimiter("\n");

    public static void main(String[] args) throws IOException, InterruptedException {
        //Entradas de solicitud get
        System.out.print("Ingrese el nombre de la pelicula: ");
        String t = entrada.nextLine();
        String apiKey = "9ed2cbd1";
        String dominio = "http://www.omdbapi.com/";

        //Solicitud get a la API parametrizada
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(dominio + "?t=" + t + "&apiKey=" + apiKey))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        String json = response.body();
        System.out.println(json);

        Gson gson = new GsonBuilder()
                .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
                .create();
        TituloDTO titulo = gson.fromJson(json, TituloDTO.class);
        Pelicula pelicula = new Pelicula(titulo);
        System.out.println(pelicula);

    }
}
1 respuesta

¡Hola! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!