2011-08-11 6 views
7

tengo clase como esta:de objetos Java a JSON con lib org.json

public class Class1 { 
    private String result; 
    private String ip; 
    private ArrayList<Class2> alarm; 
} 

Cuando la alarma es una clase como esta:

public class Class2 { 
    private String bla; 
    private String bla1; 
} 

¿Hay manera fácil de convertir a instancia de Clase 1 Objeto JSON con org.json?

Respuesta

18

Creo que el constructor de org.json.lib JSONObject(Object) es lo que estás buscando. Construirá un JSONObject a partir de su objeto Java en función de sus getters. Luego puede usar JSONObject # toString para obtener el Json real producido.

JSONObject jsonObject = new JSONObject(instanceOfClass1); 
String myJson = jsonObject.toString(); 
+1

Su bean no tiene ningún método de acceso público, por lo tanto, JSONObject no podrá obtener sus propiedades. –

+1

Eso es verdad. Supongo que puede haber sido una mala suposición de mi parte que simplemente se quedaron fuera en aras de la brevedad. – BuffaloBuffalo

+0

Ye, gracias) – Divers

4

Mientras JSONObject es el camino a seguir, es necesario seguir lo que dice acerca de su JavaDoc propiedades del bean:

construir un JSONObject de un objeto utilizando captadores de frijol. Refleja en todos los métodos públicos del objeto. Para cada uno de los métodos sin parámetros y un nombre que comienza con "obtener" o "es" seguido por una letra mayúscula, se invoca el método, y una clave y el valor devueltos del método getter se ponen en el nuevo JSONObject. La clave se forma eliminando el prefijo "obtener" o "es". Si el segundo carácter restante no está en mayúscula, el primer carácter es convertido a minúsculas. Por ejemplo, si un objeto tiene un método llamado "getName", y si el resultado de llamar a object.getName() es "Larry Fine", entonces el JSONObject contendrá "nombre": "Larry Fine".

De acuerdo con la documentación, fallará en su caso porque no expone esas propiedades a través de get y setters.