Introducción a JSON

JSON (JavaScript Object Notation) es un formato para intercambiar datos sencillos, entendiendo como sencillos el texto, los números y los valores lógicos, pudiendo estar organizados en estructuras.

La información en JSON se envia mediante un objeto, el cual está formado por pares atributovalor. El atributo es un identificativo, y el valor puede estar formado por texto, números, valores lógicos (true o false), el valor vacío (null), otros objetos o arrays. Por ejemplo, un objeto puede tener sus propiedades de texto, de números, una propiedad que tenga un array de números y una propiedad que tenga un objeto parecido a sí mismo.

La definición del lenguaje sería la siguiente:

objeto
{}
{ miembros }
miembros
atributo : valor
miembros , atributo : valor
array
[]
[ elementos ]
elementos
valor
elementos , valor
valor
texto
números
objetos
array
true
false
null

Veamos un ejemplo para poder entenderlo mejor, queremos mostrar un pequeño árbol genealógico, que muestre a los abuelos, sus hijos y los hijos de éstos, junto a sus parejas:

{
"padres": [
{"nombre": "Abuelo", "sexo": "M", "edad": "60"},
{"nombre": "Abuela", "sexo": "F", "edad": "58"}
],
"hijos": [
{"nombre": "Papá", "sexo": "M", "edad": "40",
"familia": {
"pareja": {"nombre": "Mamá", "sexo": "F", "edad": "39"},
"hijos": [
{"nombre": "Hijo 1"},
{"nombre": "Hijo 2"}
]
}
},
{"nombre": "Tía", "sexo": "F", "edad": "38"}
]
}

Su uso en javascript es muy sencillo, tan solo tendríamos que igualar la definición del objeto JSON a una variable, o si el texto que representa el objeto nos llega mediante AJAX evaluarlo (usando eval).

var familia = {
"padres": [
{"nombre": "Abuelo", "sexo": "M", "edad": "60"},
{"nombre": "Abuela", "sexo": "F", "edad": "58"}
]
};

o

var familia = eval('('+'{"padres": [{"nombre": "Abuelo", "sexo": "M", "edad": "60"}, {"nombre": "Abuela", "sexo": "F", "edad": "58"}]}'+')');

Para navegar por el objeto los arrays se usarán como normalmente en Javascript y los atributos como propiedades del objeto.

familia.padres[0].nombre

Más información

Similar Posts