2. Bases de datos NoSQL

2.2. Ficheros JSON

JavaScript Object Notation (JSON) es un formato de datos basado en texto estándar para representar datos estructurados que sigue la sintaxis de objeto de JavaScript. Aunque es muy parecido a la sintaxis de objeto literal de JavaScript, puede ser utilizado independientemente de JavaScript.

Los ficheros para almacenar datos con formato JSON cada vez son más usados en la informática y también en el ámbito de la bioinformática.

Figura 72. Ejemplo de un documento con formato JSON.
Fuente: elaboración propia.

En este formato la forma de guardar los datos es parecida al modelo clave/valor, donde la clave sería el nombre del campo o atributo y a continuación tenemos el valor.

Los ficheros JSON en realidad almacenan una colección de documentos con este formato y cada documento es la representación o la instancia de una entidad.

Si hacemos el símil con la información que almacenamos en una tabla relacional, cada fila de la tabla corresponde a un documento, y todas las filas de la tabla serían una colección de documentos.

JSON requiere utilizar comillas dobles para las cadenas y los nombres de propiedades. Las comillas simples no son válidas.

Una coma o dos puntos mal ubicados pueden producir que un archivo JSON no funcione. Se debe ser cuidadoso para validar cualquier dato que se quiera usar. Es posible validar JSON empleando una aplicación como JSONLint.

Veamos cómo se almacena la información que tenemos guardada en la tabla genomas en un fichero JSON.

{especie:"D. Melanogaster", nombre:"Mosca de la fruta",descripcion:"Tambien denominada del 
vinagre"} {especie:"H. Sapiens", nombre:"Humano",descripcion:"Nuestra propia especie"}
{especie:"M. Musculus", nombre:"Raton",descripcion:"Otro organismo modelo"}

En este caso tenemos 3 documentos que corresponden a las 3 filas de la tabla genomas. Cada documento empieza con el símbolo {, y finaliza con el símbolo }

En cada documento se repite el nombre del campo y a continuación su valor, separados por el símbolo :

Cada combinación campo/valor se separa por comas.

No se describen los tipos de datos, si el valor es una cadena de caracteres se usan las comillas dobles " ", si el valor es numérico no es necesario escribirlo entre comillas.

Otra forma muy habitual de guardar la colección de documentos es dentro de un array con los símbolos [ ] y separando los diferentes documentos por comas. Se considera toda la colección de documentos como un solo objeto, pues están todos en un array.

[{especie:"D. Melanogaster", nombre:"Mosca de la 
fruta",descripcion:"Tambien denominada del vinagre" }, {especie:"H. 
Sapiens", nombre:"Humano",descripcion:"Nuestra propia especie" }, 
{especie:"M. Musculus", nombre:"Raton",descripcion:"Otro organismo modelo" }]

Un campo puede guardar un array de valores:

{dias:["lunes", "jueves", "sábado"]}

Un campo también puede guardar otro documento JSON. También se llama documento incrustado.

{direccion: {calle: "Valencia", número: 334, codigo: 08012}}

Un campo puede guardar un array de documentos JSON.

{amigos:

[{nombre: "Pedro", edat: 34, telefono: 666737211},

{nombre: "Soraya", edat: 31, telefono: 666737212},

{nombre: "Arnau", edat: 29, telefono: 666737213}

]}

A partir de la versión 8 de MySQL es posible trabajar con documentos JSON en las tablas SQL con el tipo de datos JSON.

Podemos almacenar todo un documento JSON en un campo de la tabla y realizar consultas con el comando JSON_EXTRACT, actualizaciones con JSON_REPLACE y eliminaciones con el comando JSON_REMOVE.