Press "Enter" to skip to content

JSON. Entender y Utilizar este Formato de datos Estructurados


¿Qué es JSON?

JSON es un formato estandarizado para estructurar datos que se utiliza en el intercambio y en el almacenamiento de información basada en texto plano.

Para almacenar e intercambiar datos utilizando este formato, se recomienda usar la codificación UTF-8, porque es la codificación utilizada por defecto en JSON. Para guardar permanentemente datos utilizando este formato, se deben guardar en archivos con extensión «.json».

Tipos de datos soportados

Los Tipos de datos que soporta JSON són:

  • CADENAS DE TEXTO: Cadenas de texto formada por cero o más caracteres
  • NÚMEROS: Números Enteros o Decimales, ya sean positivos, negativos o con exponente.
  • BOOLEANOS: Datos Booleanos para representar valores TRUE y FALSE
  • NULOS: Utilizados para representar ausencia de valor.
  • ARRAYS: Utilizados para representar listas de datos.
  • OBJECTOS: Utilizados para representar colecciones de datos complejas.

¿Cómo Funciona JSON?

JSON organiza la información en Colecciones de Datos llamadas OBJETOS, representados mediante caracteres de llave de apertura y cierre.

{
   OBJECTO JSON
}

Los datos que tendrá cada OBJETO se colocarán dentro de estas llaves en forma de lista, separándolos mediante comas.

{
   DATO1,
   DATO2
}

Los datos de un objeto JSON deben estar divididos en dos apartados, separados obligatoriamente por el carácter dos puntos.

El primer apartado debe hacer referencia a la clave o nombre que tendrá el dato, y el segundo apartado debe hacer referencia al valor o valores que tendrá el dato. Es por este motivo que estas estructuras son consideradas estructuras clave-valor.»

{
   CLAVEDATO1:VALORDATO1,
   CLAVEDATO2:VALORDATO2
}

Cuando se escriba el nombre o la clave de un dato, este nombre deberá estar obligatoriamente entre comillas dobles; además, en el nombre del dato no se deben colocar espacios en blanco.

{
   "CLAVEDATO1":VALORDATO1,
   "CLAVEDATO2":VALORDATO2
}

A la hora de escribir un dato, deberemos saber de qué tipo será el valor del dato, ya que su formato será diferente dependiendo del tipo de dato del valor.

Cadenas de Texto

Si el valor es una CADENA DE TEXTO, deberá colocarse entre dobles comillas:

{
   "nombreDato": "Texto"
}

En JSON no está permitido colocar los textos entre comillas simples; por ello, siempre se deben usar dobles comillas . Por este motivo, dentro de una cadena de texto, no es posible utilizar el carácter de dobles comillas directamente. Sin embargo, en el caso de necesitar incluir una doble comilla dentro de la cadena, será necesario utilizar el carácter de escape, formado por una barra invertida seguida de la doble comilla \» .

Algunos de los CARACTERES DE ESCAPE que podemos utilizar en una cadena de texto en JSON son:

  • \" – para representar una comilla doble ( » ) dentro de la cadena.
  • \\ – para representar una barra invertida (\) dentro de la cadena.
  • \/ – para representar una barra inclinada(/) dentro de la cadena.
  • \b – para representar un retroceso .
  • \f – para representar un salto de página .
  • \n – para representar un salto de línea .
  • \r – para representar un retorno de carro.
  • \t – para representar un tabulador horizontal.

Pero además, también se puede utilizar el código hexadecimal de un carácter para representarlo, creando un carácter de escape, con una barra invertida seguida de la letra «u» minúscula y el código hexadecimal del carácter que deseamos respresentar.

  • \u200f

Números

Si el valor de un dato es númerico, no es necesario colocarlo entre dobles comillas,

{
   "nombreDato": 4
}

Si queremos que este número sea positivo o negativo, tan solo debemos colocar el signo positivo o negativo correspondiente delante del número.

{
   "nombreDatoPositivo": +4,
   "nombreDatoNegativo": -4
}

Si el número tiene más de tres cifras, no podemos utilizar ningún carácter para separar los dígitos millares.

{
   "nombreDato": 10012
}

En cambio, si el número fuese decimal, se deberá utilizar como carácter separador de la parte decimal un punto.

{
   "nombreDatoDecimal": 12.01
}

Además, si el número tuviese un exponente, se podrá utilizar la letra «e» minúscula o la letra «E» mayúscula para indicar la potencia del número

{
   "nombreDato1Exponente": 12e3,
   "nombreDato2Exponente": 12E3
}

Booleanos

Si el dato de un objeto JSON va a representar valores BOOLEANOS, los valores TRUE o FALSE de este dato no deben colocarse entre comillas dobles ni comillas simples.

{
   "nombreDato1": true,
   "nombreDato2": false
}

Nulos

Si en un dato es necesario indicar la ausencia de valor, se debe usar un valorNULO, expresado con la palabra null. Esta palabra no se debe colocar entre comillas dobles ni comillas simples.

{
   "nombreDato": null
}

Arrays

JSON permite asignar múltiples valores a un único dato de un objeto mediante listas de valores utilizando ARRAYS.

Para asignar un Array a un dato de un objecto, la lista de valores del array se deberá colocar entre corchetes.

{
   "nombreDato": [1,5,10]
}

Los valores de un Array pueden ser números, textos, valores booleanos, otros Arrays, otros objetos o una combinación de ellos.

{
   "nombreDato1": [1,5,10],
   "nombreDato2": [true,"Texto2"],
   "nombreDato3": [ [1,2,4],
                    "Texto1",
                    {"nombreDatoObjecto2":12}
           
                  ]
}

Objectos

Pero además, en los datos de un OBJECTO JSON, también podemos guardar otro objeto JSON con sus respectivos datos y valores.

{
   "nombreDato1Objecto1": {
                    "nombreDato1Objecto2":12,
                    "nombreDato2Objecto2":"Texto"
                  },
   "nombreDato2Objecto1": 12            
}

Ejemplo JSON

Supongamos que queremos almacenar información sobre los estudiantes de una universidad utilizando JSON.

Para ello, deberíamos crear un objeto JSON por cada alumno que se vaya a almacenar. En este caso, crearé un alumno y, por lo tanto, crearé un objeto JSON.

{

}

Una vez creado el objeto, crearé un dato numérico para guardar el ID del alumno.

{
   "id": 1
}

Para guardar el nombre del alumno, crearé otro datoen el objecto de tipo texto.

{
   "id": 1,
   "nombreAlumno":"Mateo"
}

Para saber si este alumno sigue activo o no en la universidad, crearé un dato booleano para guardar valoresTRUE y FALSE.

{
   "id": 1,
   "nombreAlumno":"Mateo",
   "activo": true
}

Para guardar la Fecha de Nacimiento del alumno, crearé un dato donde se guardará esta Fecha en forma de Array.

{
   "id": 1,
   "nombreAlumno":"Mateo",
   "activo": true,
   "fechaNacimiento" : [11,09,1983]
}

Y por último, crearé un dato para guardar las calificaciones del alumno mediante otro objeto JSON.

{
   "id": 1,
   "nombreAlumno":"Mateo",
   "activo":true,
   "fechaNacimiento":[11,09,1983],
   "calificaciones":{"Ciencia": 5,"Arte":3}
}

Una vez hecho esto, ya se puede dar por finalizado este objeto. Si quisiéramos guardar más alumnos, se deberán crear más objetos JSON.

{
   "id": 1,
   "nombreAlumno":"Mateo",
   "activo":true,
   "fechaNacimiento":[11,09,1923],
   "calificaciones":{"Ciencia": 5,"Arte":3}
}
{
   "id": 2,
   "nombreAlumno":"Marta",
   "activo":false,
   "fechaNacimiento":[11,09,1981],
   "calificaciones":{"Ciencia": 7,"Arte":4}
}
{
   "id": 3,
   "nombreAlumno":"Carlos",
   "activo":false,
   "fechaNacimiento":[21,11,1951],
   "calificaciones":{"Ciencia": 2,"Arte":7}
}
{
   "id": 4,
   "nombreAlumno":"Soraya",
   "activo":true,
   "fechaNacimiento":[21,11,2012],
   "calificaciones":{"Ciencia": 8,"Arte":2}
}

Video JSON