AJAX: Intercambio de datos con JSON

JSON es un protocolo de intercambio de datos ligero, fácil de leer para humanos y máquinas.


Exiten parses de JSON para la mayoria de lenguajes de programación y para todos los más populares.


Ahora viene la prengunta clave, ¿Por qué usar JSON si el estandar habitual es XML?. JSON tiene algunas ventajas sobre XML que debemos conocer.


La primera es que los datos en JSON ocupan mucho menos que XML, porque aunque nadie discute que XML es un gran invento, añade bastante sobrecarga a los datos que queremos serializar. En esta página comentan cuales son las ventajas de JSON frente a XML.


Este es un ejemplo de los datos de una persona una persona en XML:


<persona>
 <nombre>Rodrigo</nombre>
 <apellido>Corral</apellido>
 <genero>varón</genero>
 <edad>29</edad>
</persona>


Y estos son los mismos datos en JSON:


{
 «nombre» : «Rodrigo»,
 «apellido» : «Corral»,
 «genero» : «varón»,
 «edad» : 29
}


Ahora la pregunta es, ¿qué tiene que ver JSON con AJAX?
El problema principal en AJAX es mover datos entre el servidor y el cliente, este problema se suele resolver usando XML. Es por todos conocido que en las aplicaciones AJAX en el cliente la programción se realiza casi siempre con JavaScript. Exiten diversas posibilidades para leer XML desde JavaScript, pero todas ellas son farragosas en mayor o menor medida y son bastante lentas y pesadas. Aquí es donde JSON, a mi modo de ver más brilla. JASON en esencia es JavaScript perfectamente correcto, esto nos permite que simplemente haciendo


var persona = eval(
 ‘({
 «nombre» : «Rodrigo»,
 «apellido» : «Corral»,
 «genero» : «varón»,
 «edad» : 29
 })’ 
 );


tengamos un objeto JavaScript perfectamente valido!!! Simplemente usando eval!!! A partir de este momento podemos haceder a los datos de una manera orientada a objetos, por ejemplo:


alert(«El nombre de la persona es: » + persona.nombre);


Esto tiene alguna implicaciones respecto a la seguridad, porque el eval de JavaScript acepta cualquier cádena valida que contenga código JavaScript. Para evitar esto problemas es mejor usar un parser de JSON para JavaScript, que solo acepta JSON valido. El parser permite hacer:


var persona = persona_como_Jason_string.parseJSON();


para reconstruir el objeto JavaScript desde su representación textual en JSON y


var persona_como_Jason_string = persona.toJSONString();


para obtener la representación JSON del objeto, por ejemplo para devolverlo usando técnicas AJAX al servidor.


¿Es o no es espectacular?


Pues esto no es todo evidentemente tenemos que generar el string que representa los datos que queremos mover desde el servidor al cliente y exporner una URL que permita obtener estos datos. No es que se una labor complicada, pero aún así tenemos ayuda. Existe una libreria llamada Jayrock , que implementa el protocolo JSON-RPC (similar a XML-RPC aunque más limitado) para C# y que nos permite de manera muy sencilla, usando un handler de ASP.NET y una serie de atributos devolver objetos JASON desde el servidor al cliente.

10 comentarios sobre “AJAX: Intercambio de datos con JSON”

  1. No lo conocía, pero es muy interesante. Todos los intentos por aligerar XML están bien, sobre todo para agilizar las interfaces web. En el futuro, y ahora mismo, la tendencia es llevar la funcionalidad de una IU tradicional a la web, por lo que hacen falta iniciativas así. Y otras como WPF y WPF/E que darán que hablar para esto.

  2. es perfectamente valido usar eval para parsear el json a menos que tengamos la costumbre de autohackearnos, ya que el XMLHttpRequest solo permite hacer peticiones a URLs en nuestro propio dominio, solo sería necesario usar el eval si pudieramos hacer peticiones a otros dominios para evitar que nos hacken de dichos dominios.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *