Java y JSON sencillo

Hoy en dia nos toca trabajar más y más con el formato JSON en el mundo Java. Hay situaciones en las que nuestro servidor de aplicaciones tiene soporte (JEE6) y otras muchas en las que no y nos tenemos que apoyar en frameworks de terceros (Apache CXF). Por ultimo hay situaciones en las que simplemente tenemos que cubrir de forma rápida el problema y seguir adelante .Es en estas situaciones en las que la libreria de Google (Google JSON) es muy práctica y nos permite generar estructuras JSON de forma sencilla .Vamos a verlo a continuación utilizando un sencillo Servlet. En un primer lugar nuestro Servlet imprimirá por pantalla en formato HTML una lista de objetos dentro de una tabla.

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

Persona.java

package com.arquitecturajava.negocio;

public class Persona {

public Persona(String nombre, int edad) {
 super();
 this.nombre = nombre;
 this.edad = edad;
 }
 private String nombre;
 private int edad;
 public String getNombre() {
 return nombre;
 }
 public void setNombre(String nombre) {
 this.nombre = nombre;
 }
 public int getEdad() {
 return edad;
 }
 public void setEdad(int edad) {
 this.edad = edad;
 }
}

ServletDatos.java

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.arquitecturajava.negocio.Persona;

public class ServletDatos extends HttpServlet {
 private static final long serialVersionUID = 1L;

public ServletDatos() {
 super();
 // TODO Auto-generated constructor stub
 }

protected void doGet(HttpServletRequest request,
 HttpServletResponse response) throws ServletException, IOException {

List<Persona> lista = new ArrayList<Persona>();
 lista.add(new Persona("pedro", 20));
 lista.add(new Persona("ana", 30));

PrintWriter pw = response.getWriter();
 pw.println("<html>");
 pw.println("<body>");

for (Persona p : lista) {

pw.println("<p>" + p.getNombre());
 pw.println(p.getEdad() + "</p>");

}
 pw.println("</body>");
 pw.println("</html>");

}
}

El servlet nos mostrará la siguiente información.

Objetos y JSON (GSON)

Realizada esta operación vamos a modificar el Servlet para utilizar la librería de Google (GSON) y que la información que se genere sea en formato JSON.La librería se encuentra disponible en la siguiente URL.

https://code.google.com/p/google-gson/

Instalada la librería modificaremos el Servlet para que genere los datos en formato JSON.

Vamos a  ver el código:


package com.arquitecturajava.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.arquitecturajava.negocio.Persona;
import com.google.gson.Gson;

public class ServletDatosJSON extends HttpServlet {
 private static final long serialVersionUID = 1L;

 public ServletDatosJSON() {
 super();
 // TODO Auto-generated constructor stub
 }
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 List<Persona> lista = new ArrayList<Persona>();
 lista.add(new Persona("pedro", 20));
 lista.add(new Persona("ana", 30));
 Gson gson= new Gson();
 PrintWriter pw=response.getWriter();
 pw.println( gson.toJson(lista));
 pw.close();

 }

}

Como podemos ver la libreria es muy sencilla de utilizar . En primer lugar nos creamos un objeto Gson.

Gson gson= new Gson();

Para mas adelante pasarle la lista de personas y que la convierta

pw.println( gson.toJson(lista));

Realizados estos cambios el Servlet devuelve lo siguiente :

Como podemos ver utilizar la librería es muy sencillo