En esta nueva categoría, Tips Indispensables vamos a incorporar a JSON.

Que es ? para que sirve ? es otro lenguaje ? Ver referencias.

Lo primero que debemos saber es que JSON vino para reemplazar a XML en la mayoría de los casos. Digo en la mayoría porque los archivos de configuración todavía nos resulta cómodo escribirlos en XML.
Y por supuesto, no es un lenguaje de programación.
Pero a la hora de enviar y recibir datos desde un servidor hacia un cliente, JSON se ha vuelto muy interesante. Vamos a ver un simple ejemplo:

En este escenario tenemos una aplicación servidor en Java y un cliente JavaScript:

Podemos enviar un objeto con atributos y dentro de este otros objetos sin problemas. Si tenemos un bean llamado persona podría ser:

public class Persona {

   private String nombre;

   private String apellido;

   private Date fechaNacimiento;

   private String domicilio;

   // ... Los setters y getters para cada atributo ...
}

Podemos crear un HashMap con los atributos y sus valores, asignarlos a un array tipo JSON y finalmente convertirlos enviando desde un objeto JSONObject.

Map<String, Object> mapa = new HashMap<String, Object>();

mapa.put("nombre", bean.getNombre());

mapa.put("apellido",bean.getApellido());

mapa.put("fechaNacimiento", bean.getFechaNacimiento());

// mas atributos

JSONArray datos = new JSONArray(); // Creamos un array para JSON

datos.put(mapa); // Lo cargamos con el map

JSONObject job = new JSONObject(); // Creamos un JSONObject

job.put("personas", datos);  // Y finalmente lo preparamos para enviar al servidor

Con este ejemplo estamos enviando el objeto serializado de la misma manera que lo hacíamos con XML en un web service, por ejemplo.
Ahora un pequeño código JavaScript basado en ExtJS para obtener la colección de Personas y utilizarla.

Ext.Ajax.request({

  url : '/UrlDelControlador',

  method : 'POST',

  params : {

    // Parametros

  },

  success : function(response, options) {

    var txt=response.responseText;

    var objeto=Ext.util.JSON.decode(txt); // Decode el String enviado

    objeto.data['personas'].nombre;

    objeto.data['personas'].apellido;

  // mas atributos

  }

});

Ahora, que es lo que envía JSON ? Un String como el siguiente:

{
   "nombre" : "Marcelo",
   "apellido" : "Agustini",
   "fechaNacimiento" : {
       "year" : 77
       "month" : 5,
       "day" : 14,
       "date" : 3,
       "hours" : 0,
       "minutes" : 0,
       "seconds" : 0,
       "time" : 391921200000,
       "timezoneOffset" : 180,
   },
   "direccion" : {
       "calle" : "Rivadavia",
       "numero" : 450
   }
}
Anuncios