lunes, 20 de julio de 2009

Json en Java

En el post anterior me referia a xml y el manejo que castor-xml nos proporciona para simplificar las cosas, dentro del mismo post esta el siguiente comentario:

DrMartin dijo....
"He escuchado que la nueva era de la información promete que el sustituto de XML sea JSON, he usado JSON hace poco y me parece que en efecto promete ser mas eficiente, pero sobre todo más ameno al programador ya que con solo ver su notación se sabe sobre que versa el flujo de datos."
Efectivamente Json es la manera en que los componentes de la capa de presentación de las aplicaciones web se estan comunicando con los servidores, se ha convertido en un estandar e incluso los componentes javascript que antes tenian dicha interacción atravez de xml ahora dan soporte para Json, el soporte de librerias (frameworks) como JQuery es extremadamente bueno.

Con todo esto la duda que tuve es como generar Json de manera eficiente desde Java, pues bueno en http://json.org/ esta la respuesta, revisando algunas de las librerias que en dicho sitio se presentan inmediatamente me llamo la atención GSon que promete ser "A Java library to convert JSON to Java objects and vice-versa", revisando un poco me pareción muy intuitivo (demasiado) su uso, un método muy sencillo en donde se encapsula la escritura de Json:

public static String Object2Json(Object obj){
return new Gson().toJson(obj);
}

y la lectura de un Json así:

@SuppressWarnings("unchecked")
public static Object Json2Object(String json, Class clazz){
return new Gson().fromJson(json, clazz);
}

Por supuesto que si queremos utilizar colecciones dentro de nuestros objetos debemos darle un manejo mucho mas especializado tal como se describe en la documentación de Gson, los métodos que he colocado funcionarán para POJOs (aunque yo lo probe con unos mapas y en la escritura todo bien, el problema fue en la lectura pero por el manejo que se debe de dar para las colecciones).

Otra libreria que me parecio interesante aunque no cumple toda la funcionalidad que Gson es FlexJson, su uso tambien es muy sencillo, para escribir un Json no se necesita mas que:

public static String Object2Json(Object obj){
return new JSONSerializer().exclude("*.class").serialize(obj);
}

o si necesitamos un Json con estructura para ExtJs:

public static String Object2JsonExtJs(Object obj,String alias){
return new JSONSerializer().exclude("*.class").serialize(alias, obj);
}

Esta libreria da soporte para anotaciones y su documentación es bastante completa.

Existen muchas otras librerias pero estas dos me parecieron (al menos para mis futuras necesidades) las más utiles.

No hay comentarios:

Publicar un comentario