Saltar al contenido

json

¿Qué es JSON? La guía definitiva de JavaScript Object Notation

5 min read

¿Qué es JSON? La guía definitiva de JavaScript Object Notation

Si alguna vez ha trabajado en desarrollo web, interactuado con una API o configurado una aplicación de software moderna, sin duda se ha encontrado con JSON. Es el lenguaje invisible que impulsa la web moderna, facilitando el intercambio fluido de datos entre servidores y navegadores web en todo el mundo.

Pero, ¿qué es exactamente JSON? ¿Cómo es que un formato basado en JavaScript se convirtió en el estándar indiscutible para el intercambio de datos en casi todos los lenguajes de programación?

En esta completa guía de 1000 palabras, desmitificaremos JSON. Exploraremos su estructura, comprenderemos por qué reemplazó a formatos más antiguos como XML y analizaremos las formas prácticas en que se usa en el desarrollo de software actual.

¿Qué significa JSON?

JSON significa JavaScript Object Notation (Notación de Objetos de JavaScript).

A pesar de su nombre, JSON es fundamentalmente un formato de datos independiente del lenguaje. Si bien su sintaxis se deriva de la forma en que se escriben los objetos en el lenguaje de programación JavaScript, no es necesario saber JavaScript para leer, escribir o comprender JSON. En la actualidad, prácticamente todos los lenguajes de programación (Python, Java, C#, PHP, Ruby, etc.) tienen herramientas integradas para analizar y generar datos JSON.

En esencia, JSON es un formato ligero basado en texto que se utiliza para almacenar y transportar datos estructurados. Está diseñado para ser fácilmente legible y escribible por humanos, al mismo tiempo que es fácil de analizar y generar para las máquinas.

La sintaxis y estructura de JSON

JSON se basa en dos estructuras de datos universales que existen en casi todos los lenguajes de programación modernos:

  1. Una colección de pares nombre/valor: A menudo se realiza como un objeto, registro, estructura, diccionario, tabla hash, lista con claves o matriz asociativa.
  2. Una lista ordenada de valores: A menudo se realiza como una matriz (array), vector, lista o secuencia.

Veamos un ejemplo concreto para ver cómo se ven estas estructuras en la práctica. Aquí hay un archivo JSON típico que representa un perfil de usuario:

{
  "nombre": "Juan",
  "apellido": "Perez",
  "edad": 30,
  "estaEmpleado": true,
  "contacto": {
    "email": "juan.perez@example.com",
    "telefono": "555-1234"
  },
  "habilidades": ["JavaScript", "Python", "Analisis de Datos"],
  "proyectos": null
}

Desglosando las reglas

Al observar el ejemplo anterior, podemos identificar las reglas estrictas que rigen la sintaxis JSON:

  • Los datos están en pares nombre/valor: También conocidos como pares clave/valor (key/value). Una clave debe ser una cadena (string) entre comillas dobles (por ejemplo, "nombre"). El valor puede ser una cadena, un número, un booleano, nulo, un objeto o una matriz. La clave y el valor están separados por dos puntos (:).
  • Los datos están separados por comas: Cada par clave/valor está separado del siguiente por una coma (,).
  • Las llaves contienen objetos: Un objeto ({}) es un conjunto desordenado de pares clave/valor. En nuestro ejemplo, todo el documento es un objeto principal y "contacto" contiene un objeto anidado.
  • Los corchetes contienen matrices: Una matriz ([]) es una colección ordenada de valores. En nuestro ejemplo, "habilidades" contiene una matriz de tres cadenas de texto.
  • Las comillas dobles son obligatorias para las cadenas: A diferencia de JavaScript, donde puede usar comillas simples ('), JSON requiere estrictamente comillas dobles (") para cadenas y claves.

Tipos de datos permitidos

Un valor en JSON debe ser uno de los siguientes tipos de datos:

  • Cadena (String): Texto entre comillas dobles (por ejemplo, "Hola").
  • Número (Number): Un número entero o de punto flotante (por ejemplo, 42 o 3.14).
  • Booleano (Boolean): true o false.
  • Nulo (Null): Representa un valor vacío o inexistente (null).
  • Objeto (Object): Un objeto JSON anidado ({}).
  • Matriz (Array): Una lista de valores ([]).

JSON intencionalmente no admite funciones, fechas (las fechas generalmente se pasan como cadenas) ni valores no definidos (undefined). Esta limitación estricta garantiza la máxima compatibilidad en diferentes lenguajes de programación.

Por qué JSON reemplazó a XML

Para apreciar verdaderamente JSON, tenemos que mirar hacia atrás al formato que reemplazó en gran medida: XML (eXtensible Markup Language).

A principios de la década de 2000, XML era el estándar para el intercambio de datos en la web (piense en AJAX - Asynchronous JavaScript and XML). Sin embargo, XML se basa en gran medida en etiquetas (tags), similar a HTML.

Así es como se vería nuestro ejemplo JSON anterior en XML:

<usuario>
  <nombre>Juan</nombre>
  <apellido>Perez</apellido>
  <edad>30</edad>
  <estaEmpleado>true</estaEmpleado>
  <contacto>
    <email>juan.perez@example.com</email>
    <telefono>555-1234</telefono>
  </contacto>
  <habilidades>
    <habilidad>JavaScript</habilidad>
    <habilidad>Python</habilidad>
    <habilidad>Analisis de Datos</habilidad>
  </habilidades>
</usuario>

En comparación con XML, JSON ganó la guerra por el intercambio de datos web por varias razones:

  1. Menos detallado (Less Verbose): JSON no usa etiquetas de cierre, lo que reduce significativamente el tamaño de los archivos y el uso de ancho de banda.
  2. Más rápido de analizar (Parse): Debido a que JSON refleja de cerca las estructuras de datos de los lenguajes de programación modernos, analizar JSON en un objeto en la memoria es increíblemente rápido. El análisis XML es notoriamente lento y consume muchos recursos.
  3. Las matrices son nativas: JSON admite matrices de forma nativa ([]). XML no tiene un tipo de matriz nativo; los desarrolladores tienen que crear elementos repetidos (como <habilidad> arriba) para simular una lista.
  4. Más fácil para los humanos: La sintaxis limpia y minimalista de JSON es simplemente mucho más fácil de leer y escribir manualmente para los humanos que el pesado marcado de XML.

¿Dónde se usa JSON hoy en día?

JSON se ha convertido en el estándar de facto para transferir datos de texto. Sus principales casos de uso incluyen:

1. API web (REST y GraphQL)

Cuando una aplicación web moderna (como un frontend de React o Vue) necesita obtener datos de un servidor (como un backend de Node.js o Python), esos datos casi siempre se envían formateados como JSON. Ya sea que esté obteniendo datos meteorológicos, cargando tweets o enviando un formulario de pago, la carga útil (payload) es JSON.

2. Archivos de configuración

Debido a su naturaleza legible por humanos, JSON se usa en gran medida para archivos de configuración en herramientas de desarrollo modernas. Si usa Node.js, la configuración y las dependencias de su proyecto se almacenan en un archivo package.json. Herramientas como VS Code, Prettier y Eslint dependen de JSON para la configuración.

3. Bases de datos NoSQL

Las bases de datos NoSQL modernas, sobre todo MongoDB, almacenan datos en un formato llamado BSON (Binary JSON). Esto permite a los desarrolladores almacenar estructuras de datos complejas y anidadas directamente en la base de datos sin tener que mapearlas a filas y columnas rígidas como en las bases de datos SQL tradicionales.

Conclusión

El ascenso de JSON a la dominación es un testimonio del poder de la simplicidad. Al crear un formato que es liviano, estrictamente definido y universalmente entendido tanto por humanos como por máquinas, JSON revolucionó la forma en que se transmiten los datos a través de la web.

Ya sea que sea un ingeniero de software experimentado que crea microservicios complejos o un principiante que aprende a obtener datos para su primera aplicación web, dominar JSON es una habilidad fundamental que es absolutamente esencial en el panorama tecnológico moderno.

Buy me a coffee