Introducción Java y JSON – Primera parte (Con ejemplo)
Bienvenidos a la primera parte de “Introducción a Java y JSON”, la verdad no quiero ahondar en que es Java o que es JSON debido que hay miles de sitios donde pueden buscar definiciones.
El alcance de esta introducción es ilustrar el intercambio de datos entre un servidor de JAVA con un XHTML, algo que podemos hacer de diversas maneras pero en este caso nos toca ver con JSON, en esta primera entrega se limitará a generar JSON desde JAVA con una libreria de Google llamada GSON, en la segunda parte se verán ejemplos mas complicados y usos con Ajax.
Por lo tanto para esta receta necesitamos los siguientes ingredientes:
-Compilador Java en este caso jdk 1.5 (Que viene con eclipse o netbeans)
-Libreria GSON descargala de http://code.google.com/p/google-gson/
Ok, lo primero es crear una clase, seré original y le pondre “Persona”
/**
*
* @author Andrés Pontt
*/
public class Persona {
private String nombre;
private String apellido;
private int edad;
/**
* El constructor es obligatorio si queremos deserializar correctamente el response JSON
*/
public Persona(){
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
Luego de crear el Java Bean Persona, procedermos a instanciarlo en un main:
Persona persona1 = new Persona();
persona1.setNombre("Andres");
persona1.setApellido("Pontt");
persona1.setEdad(24);
Ahora viene la magia de la libreria GSON, en base a este objeto lo transformaremos en un String JSON
Gson gson = new Gson(); String jsonOutput = gson.toJson(persona1);
Si le hacemos un System.out.println a jsonOutput, esto nos entrega
jsonOutput: {“nombre”:”Andres”,”apellido”:”Pontt”,”edad”:24}
Cabe destacar que la llave ” { ” representa un objeto en notación JSON, lo que quiere decir que si utilizamos este String en un xhtml lo reconocera como un objeto inmediatamente (haciendo un eval).
A continuación, a partir del String generado (jsonOutput) lo utilizaré para setear un objeto, en este caso el Java Bean Persona.
Creamos un nuevo objeto vacio
Persona persona2 = new Persona();
La libreria GSON nos exige crear un objeto de la clase Type para pasarla como argumeno del método fromJson, cuando es un objeto simple me parece que no es necesario pero con objetos mas sofisticados (objetos con listados de objetos dentro) si lo es.
Creando type
Type collectionType = new TypeToken<Persona>(){}.getType();
Usando el método fromJson, le pasamos jsonOutput que es la variable con el String json visto anteriormente.
persona2 = gson.fromJson(jsonOutput, collectionType);
Ahora persona2, es un objeto listo para poder utilizarse, si quieren hacer la prueba utilicen los getters del objeto.
Fin de primera parte (Pronto subire el proyecto completo java)
¿El objeto Type creado (Type collectionType = new TypeToken(){}.getType();
) a que libreria corresponde?
Es parte de la libreria reflect de Java,
java.lang.reflect.Type
Saludos.
también parte del paquete de “com.google.gson.reflect.TypeToken;”.
XD y ya tiene mas de un año esa duda… que hasta ya la habrás resuelto Manuel.. pero por si acaso..
saludos!
P.d. Por cierto ando haciendo mi prueba… y cuando mando imprimir jsonOutput, no me lo manda asi como tu
jsonOutput: {“nombre”:”Andres”,”apellido”:”Pontt”,”edad”:24}
si no:
Persona@12d03f9
De antemano gracias! y buena guía para empezar
socio como puedo llenar un Jtable con un json ???
Gracias por su tiempo brother
@charly, claro la clase TypeToken es de la libreria GSON pero Type es parte de JAVA.
Con respecto a tu P.d, creo que estas intentando imprimir el objeto y no el string json construido con GSON.
Prueba hacer esto.
Gson gson = new Gson();
Objeto objeto = new Objeto();
System.out.println(gson.toJson(objeto);