JSON

<< Clases y objetos Clases >>

JSON o JavaScript Object Notation es una notación especial usada para crear objetos genéricos en JavaScript. Es un formato popular para el intercambio de datos entre aplicaciones, o para almacenar información en bases de datos noSQL (MongoDB por ejemplo). Para más información consulta json.org.

Antes de nada, vamos a ver cómo crear un objeto genérico en JavaScript sin usar JSON, y le añadiremos algunas propiedades y métodos (sí, en JavaScript, podemos añadir propiedades y métodos a un objeto en cualquier momento). Para crear un objeto genérico (y por tanto, vacío), usamos la clase Object.

Como podemos ver, añadimos (o accedemos a) propiedades al objeto usando el punto (objeto.propiedad) o la notación de array asociativo (objeto[propiedad]).

let obj = new Object();
obj.nombre = "Peter"; // Añadimos la propiedad 'nombre' usando la notación del punto
obj["edad"] = 41; // Añadimos la propiedad 'edad' usando la notación de un array asociativo
obj.getInfo = function() { // Creamos un nuevo método → getInfo()
    return "Mi nombre es " + this.nombre + " y tengo " + this.edad
}

console.log(obj.getInfo()); // Imprime "Mi nombre es Peter y tengo 41"
console.log(obj.nombre); // Imprime "Peter". Accedemos al nombre usando la notación del punto
console.log(obj["nombre"]); // Imprime "Peter". Ahora accedemos con la notación del array asociativo
let prop = "nombre";
console.log(obj[prop]); // Imprime "Peter". Podemos acceder a la propiedad “nombre” a partir de una variable que almacena el nombre de dicha propiedad (sólo para la notación de array)

Ahora, haremos lo mismo pero usando la notación JSON. Es equivalente a lo que hemos hecho antes, pero lo que haremos será asignarle las propiedades con los dos puntos ':' en lugar del igual '='. Las propiedades iniciales serán declaradas entre llaves, pero podemos añadir más luego como hicimos en el ejemplo anterior. Lo equivalente a usar new Object(), sería dejar las llaves vacías { } (objeto vacío).

let obj = {
    nombre: "Peter",
    edad: 41,
    getInfo () { // Método
        return "Mi nombre es " + this.nombre + " y tengo " + this.edad
    }
}

En JSON, como en JavaScript, los corchetes se usan para crear arrays. Dentro de un array podemos almacenar otros objetos (en formato JSON siempre), valores primitivos, u otros arrays.

let persona = {
  nombre: "Peter",
  edad: 41,
  trabajos: [ // trabajos es un array de objetos JSON
      {
          descripcion: "Malabarista",
          duracion: "2003-2005"
      },
      {
          descripcion: "Conductor de autobús",
          duracion: "2005-2015"
      }
  ]
}

console.log(persona.trabajos[1].descripcion); // Imprime "Conductor de autobús”

<< Clases y objetos Clases >>