JSON ¿XML a dieta?

freddie-vs-json1JSON (Javascript Object Notation) es representación de un objeto JavaScript en forma de cadena. ha emergido como formato popular de representación de datos, implementado para la los lenguajes de programación que más conocidos.

Por ejemplo si debemos transmitir gran cantidad de datos en formato XML, conocidos en ambos extremos de la comunicación, las etiquetas empleadas en XML cuestan ancho de banda y capacidad del sistema.  JSON es más compacto que XML, con una notación facil de leer y escribir (pero se pierde riqueza de interpretación de campos que tiene XML).

Está seria una representación de un objeto JavaScript con notación JSON:

{"platanos":"2","manzanas":"5","peras":"20"}

Este objeto tiene 3 propiedades: Plátanos, manzanas y peras con sus respectivos valores.

Ejemplo:

var perro = {};
perro.nombre="lagun";
perro.peso = 28;

Se puede crear el mismo objeto de la misma forma:

var perro = { nombre: "lagun", peso: 28 };

Con JSON cogemos esta expresion y creamos una cadena:

var jsonDog = ' { "nombre": "lagun", "peso": "28" } ';

Objeto a cadena con JSON.stringify

Como JSON es un subconjunto de la notación literal de objectos en Javascript, se puede usar en JavaScript sin necesidad de añadir ninguna librería (al tratarse de un subconjunto de JavaScript JSON no puede representar todos los valores Javascript).

La funcion stringify() convierte una estructura de datos JavaScript en texto JSON. Convierte un valor de JavaScript en una cadena de la notación de objetos JavaScript (JSON).

En JSON podemos representar: El valor null, valores booleanos true y false, números flotantes, cadenas, arrays de valores. El valor primitivo undefined así como números NaN (Not a Number) no son representables (tampoco funciones,fechas ni objetos RegExp).

Básicamente lo que hace el método es serializar un objeto, consiste en convertir el estado de un objeto en una cadena que podemos almacenar.

JSON.stringify({hello: "world"}); // '{"hello":"world"}'
JSON.parse('{"hello":"world"}').hello; // "world"

La descripción más de detallada de esta funcion la teneis en http://www.json.org/js.htmlTambién hay ejemplo muy interesante en JSFIDDLE.

Ejemplo:

var dog = { name: "fido", weight: 28 };
jsonDog = JSON.stringify(dog);
document.write(jsonDog);
// produce {"name":"fido","weight":28}

Ejemplo:

<pre>var contact = new Object();
contact.firstname="Iker";
contact.surname="Secret";
contact.phone = ["555-0100", "555-0120"];

var filter = new Array();
filter[0] = "firstname";
filter[1] = "surname";

jsonContact = JSON.stringify(contact,filter,'\t');

document.write('<pre>'+jsonContact+'</pre>');
console.log(jsonContact);

Otro ejemplo:

o = {x:1, y:{z:[false,null,""]}}; // Define a test object
s = JSON.stringify(o);
// s is '{"x":1,"y":{"z":[false,null,""]}}'
p = JSON.parse(s);
// p is a deep copy of o

JSON no soporta los metodos, por ejemplo:

var dog = {
 name: "fido",
 weight: 28,
 bark: function() { return "Woof!"; }
};

Si lo pasamos a cadena:

jsonDog = JSON.stringify(dog);

Reconstruye un objeto pasado a cadena

Para ellos debemos usar el método de JSON parse(), coge una cadena JSON y devuelve un objeto.

Ejemplo:

var dog = { name: "fido", weight: 28 };
jsonDog = JSON.stringify(dog);
document.write('<pre>'+jsonDog+'</pre>');
console.log(jsonDog);

var objNewDog = JSON.parse(jsonDog);
console.log(objNewDog);
document.write('<pre>'+objNewDog+'</pre>');

Un pensamiento en “JSON ¿XML a dieta?

  1. Pingback: BitTorrent Sync API | Internet y GNU/Linux

Deja un comentario