Blog de Programación y Diseño Web

Introducción Java y JSON – Primera parte (Con ejemplo)

Escrito en Json con Java by Andres on the febrero 23rd, 2009

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)

Segunda parte

5 Responses to 'Introducción Java y JSON – Primera parte (Con ejemplo)'

Subscribe to comments with RSS or TrackBack to 'Introducción Java y JSON – Primera parte (Con ejemplo)'.

  1. Manuel said, on julio 9th, 2009 at 11:17

    ¿El objeto Type creado (Type collectionType = new TypeToken(){}.getType();
    ) a que libreria corresponde?

  2. admin said, on julio 9th, 2009 at 11:45

    Es parte de la libreria reflect de Java,

    java.lang.reflect.Type

    Saludos.

  3. charly said, on octubre 3rd, 2010 at 2:48

    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 ;)

  4. Pipo said, on octubre 23rd, 2010 at 16:24

    socio como puedo llenar un Jtable con un json ???
    Gracias por su tiempo brother

  5. Andres said, on noviembre 6th, 2010 at 0:32

    @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);

Dejame tu comentario