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

duda sobre variable Gson

Hola,

Mi duda es sobre como convertir el marcador que baja usando Gson de una API a double.

import com.google.gson.annotations.SerializedName;

public class Divisa {

@SerializedName("conversion_rate")
double tasaConversion;

Divisa ( double tasaConversion){

    this.tasaConversion=tasaConversion;
    System.out.println(tasaConversion);


}

}

Me arroja el marcador con @

"C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:C:\Users\Maria Fernanda\AppData\Local\JetBrains\IntelliJ IDEA Community Edition 2024.2.3\lib\idea_rt.jar=54222:C:\Users\Maria Fernanda\AppData\Local\JetBrains\IntelliJ IDEA Community Edition 2024.2.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Maria Fernanda\IdeaProjects\ConversorDeMonedas\out\production\ConversorDeMonedas;C:\Users\Maria Fernanda\ORACLE JAVA backend\gson-2.10.1.jar" Main


Sea bienvenido al convertidor de divisas =) Elija el número de su selección a convertir:

  1.     "USD a ARS"
    
  2.     "ARS a USD"
    
  3.     "USD a BRL"
    
  4.     "BRL a USD"
    
  5.     "USD a COP"
    
  6.     "COP a USD"
    

4 BRL USD {"result":"success","documentation":"https://www.exchangerate-api.com/docs","terms_of_use":"https://www.exchangerate-api.com/terms","time_last_update_unix":1734912002,"time_last_update_utc":"Mon, 23 Dec 2024 00:00:02 +0000","time_next_update_unix":1734998402,"time_next_update_utc":"Tue, 24 Dec 2024 00:00:02 +0000","base_code":"BRL","target_code":"USD","conversion_rate":0.1644} {"result":"success","documentation":"https://www.exchangerate-api.com/docs","terms_of_use":"https://www.exchangerate-api.com/terms","time_last_update_unix":1734912002,"time_last_update_utc":"Mon, 23 Dec 2024 00:00:02 +0000","time_next_update_unix":1734998402,"time_next_update_utc":"Tue, 24 Dec 2024 00:00:02 +0000","base_code":"BRL","target_code":"USD","conversion_rate":0.1644} Divisa@14ec4505 Escriba el monto con centavos de BRL a convertir en USD : 100.10

y lógicamente no puedo usarlo para multiplicarlo para hacer la conversión:

System.out.println(response.body()); String json = response.body(); System.out.println(json); Gson gson = new Gson(); Divisa miDivisa = gson.fromJson(json, Divisa.class); System.out.println(miDivisa); Scanner lectureMonto = new Scanner(System.in); System.out.println(" Escriba el monto con centavos de " + MonedaOriginal + " a convertir en "+ MonedaConvertida+" : ");

    MontoAConvertir = lectureMonto.nextInt();

    MontoConvertido=MontoAConvertir*miDivisa.tasaConversion;

    System.out.println("El monto convertido es de: " + MontoConvertido);

    }





}


Gracias
1 respuesta

¡Hola Estudiante, espero que estés bien!

La clase que has mostrado parece estar bien, pero es posible que el problema esté en la forma en que estás utilizando Gson para convertir el JSON en un objeto Divisa.

Cuando utilizas Gson para convertir el JSON en un objeto Divisa, debes asegurarte de que el nombre del campo en el JSON coincida con el nombre del atributo en la clase Divisa.

En este caso, parece que el nombre del campo en el JSON es "conversion_rate", mientras que el nombre del atributo en la clase Divisa es "tasaConversion".

Para que Gson pueda hacer la conversión correctamente, puedes utilizar la anotación @SerializedName para especificar el nombre del campo en el JSON que se debe asignar al atributo en la clase Divisa.

Aquí tienes un ejemplo de cómo podrías modificar tu clase Divisa para utilizar la anotación @SerializedName:

public class Divisa {
    @SerializedName("conversion_rate")
    double tasaConversion;

    // Resto de tu código...
}

Con esta modificación, Gson debería ser capaz de convertir el marcador que obtienes de la API a un objeto Divisa con el atributo tasaConversion correctamente inicializado.

Espero que esta información te sea útil. Si necesitas más ayuda, no dudes en preguntar. ¡Buena suerte con tu proyecto!

Espero haber ayudado y buenos estudios!