es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al intentar convertir un objeto Java a una cadena JSON utilizando GSON.

Tengo un objeto MobilePhone con campos (String brand y name, int ram y rom) que quiero convertir en una cadena Json. Intento hacerlo de la siguiente manera:

public static void main(String[] args) {
    MobilePhone mp = new MobilePhone();
    mp.setBrand("iPhone");
    mp.setName("X");
    mp.setRam(4);
    mp.setRom(1);

    Gson json = new Gson();
    String object = json.toJson(mp);
    System.out.println(object);
}

Obtengo los siguientes errores:

Excepción en el hilo “main” java.lang.reflect.InaccessibleObjectException: No se puede hacer público (nombre del paquete).MobilePhone() accesible: el módulo (nombre del proyecto) no exporta (nombre del paquete) al módulo gson
en java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:349)
en java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:289)
en java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:189)
en java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:182)
en gson@2.8.2/com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:101)
en gson@2.8.2/com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:83)
en gson@2.8.2/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:99)
en gson@2.8.2/com.google.gson.Gson.getAdapter(Gson.java:423)
en gson@2.8.2/com.google.gson.Gson.toJson(Gson.java:661)
en gson@2.8.2/com.google.gson.Gson.toJson(Gson.java:648)
en gson@2.8.2/com.google.gson.Gson.toJson(Gson.java:603)
en gson@2.8.2/com.google.gson.Gson.toJson(Gson.java:583)
en IAssessment/application.AddData.main(AddData.java:23) – esta es la línea String object = json.toJson(mp);

Por favor, ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el constructor de la clase MobilePhone no es accesible debido a las restricciones del módulo. Para solucionar este error, añade la línea opens (nombre del paquete) a tu archivo module-info.java, lo cual abrirá tu paquete para la reflexión. Por ejemplo, si el nombre de tu paquete es com.example.mobilephone, agrega la siguiente línea a tu archivo module-info.java:

    opens com.example.mobilephone;
    

    Después de añadir esta línea, recompila tu código e intenta ejecutarlo nuevamente. El error debería haberse resuelto y el programa debería convertir correctamente tu objeto MobilePhone a una cadena JSON.

Comments are closed.