📋
← Volver a guías

¿Qué es JSON? Una guía completa para principiantes

· Etiquetas: json, what-is-json, json-syntax, json-data-types, web-development

¿Qué es JSON?

JSON (JavaScript Object Notation) es un formato de intercambio de datos ligero y basado en texto diseñado para que los humanos puedan leerlo y escribirlo fácilmente y para que las máquinas puedan analizarlo y generarlo sin esfuerzo. Originalmente derivó de la sintaxis de literales de objetos de JavaScript, pero desde entonces se ha convertido en un estándar independiente del lenguaje, soportado por prácticamente todos los lenguajes de programación.

Hoy en día, JSON es el formato dominante para el intercambio de datos en la web. Impulsa las APIs REST, los archivos de configuración, las bases de datos NoSQL, la comunicación de aplicaciones móviles y numerosos otros sistemas basados en datos. Su simplicidad y ubicuidad lo han convertido en la opción predeterminada para los desarrolladores de todo el mundo.

Reglas de sintaxis de JSON

JSON sigue un conjunto estricto y mínimo de reglas de sintaxis:

  • Los datos se estructuran en pares clave/valor
  • Todas las claves deben ser cadenas entre comillas dobles (no se permiten comillas simples)
  • Los pares clave/valor se separan con dos puntos (:)
  • Los pares se separan con comas (,)
  • Las llaves {} encierran los objetos
  • Los corchetes [] encierran los arrays
  • No se permiten comas finales
  • No se permiten comentarios en JSON estricto

Ejemplo de JSON válido

{
  "name": "Jane Smith",
  "age": 28,
  "isEmployed": true,
  "skills": ["JavaScript", "Python", "SQL"],
  "address": {
    "street": "123 Main Street",
    "city": "San Francisco",
    "zipCode": "94102"
  },
  "phoneNumbers": null
}

Ejemplos de JSON no válido

Coma final (no válido):

{
  "name": "Jane",
  "age": 28,
}

Clave con comillas simples (no válido):

{ 'name': 'Jane' }

Clave sin comillas (no válido):

{ name: "Jane" }

Tipos de datos de JSON

JSON soporta exactamente seis tipos de datos:

| Tipo | Descripción | Ejemplo | |------|-------------|---------| | String (cadena) | Texto Unicode entre comillas dobles | "Hello, world!" | | Number (número) | Entero o coma flotante | 42, 3.14, -7, 1.5e10 | | Boolean (booleano) | Verdadero o falso lógicos | true, false | | Null (nulo) | Valor vacío intencional | null | | Object (objeto) | Colección desordenada de clave/valor | {"key": "value"} | | Array | Lista ordenada de valores | [1, 2, 3] |

Notablemente ausentes: las fechas, las marcas de tiempo, los datos binarios, undefined y las funciones no tienen una representación nativa en JSON. Las fechas normalmente se almacenan como cadenas ISO 8601 por convención.

JSON frente a otros formatos de datos

JSON coexiste con varios otros formatos de intercambio de datos, cada uno con sus ventajas e inconvenientes:

  • JSON vs XML: JSON es más conciso y más rápido de analizar. XML admite atributos, espacios de nombres y esquemas (XSD), pero es significativamente más verboso.
  • JSON vs YAML: YAML es más legible para los humanos en archivos de configuración y admite comentarios, pero su sintaxis sensible a la sangría puede ser propensa a errores. JSON es más portátil y tiene una validación más estricta.
  • JSON vs CSV: CSV es plano y solo tabular. JSON admite jerarquías anidadas y tipos de datos mixtos.
  • JSON vs Protocol Buffers: Protobuf es más pequeño y más rápido para la comunicación entre máquinas, pero requiere una definición de esquema y no es legible para los humanos.

Por qué JSON domina las APIs web

Varios factores explican el dominio de JSON en el diseño de APIs web:

  1. Ubicuidad en los lenguajes -- Todos los lenguajes importantes tienen un analizador JSON nativo o bien mantenido, lo que elimina la fricción de integración.
  2. Soporte nativo del navegador -- JSON.parse() y JSON.stringify() de JavaScript hacen que JSON sea la elección natural para las aplicaciones web.
  3. Ancho de banda mínimo -- La sintaxis ligera de JSON produce cargas útiles más pequeñas que XML, lo que reduce la latencia y los costos de ancho de banda.
  4. Legibilidad humana -- Los desarrolladores pueden inspeccionar, depurar y escribir datos JSON a mano sin herramientas especiales.
  5. Esquema flexible -- A diferencia de formatos rígidos como XML Schema o Protocol Buffers, JSON se adapta a estructuras de datos en evolución sin necesidad de recompilación.

Casos de uso comunes de JSON

  • APIs REST y GraphQL -- El formato estándar para las cargas útiles de solicitud y respuesta.
  • Archivos de configuración -- Utilizado por herramientas como ESLint, Prettier, webpack y VS Code.
  • Bases de datos NoSQL -- MongoDB y CouchDB almacenan los datos como documentos similares a JSON.
  • Serialización de datos -- Estructuración de datos para almacenamiento, transferencia o caché.
  • Comunicación en tiempo real -- Mensajes JSON en flujos WebSocket y Webhooks.
  • Agregación de registros (logs) -- Herramientas de registro estructurado como Winston, Logstash y Datadog usan JSON para entradas de registro buscables y filtrables.

Validación y formateo de JSON

Al trabajar con JSON, la validación es crítica. Un solo error de sintaxis -- una coma final, una comilla faltante o un carácter sin escapar -- puede romper una integración de API completa o un archivo de configuración. La inspección manual no es fiable, especialmente para documentos JSON grandes.

Cómo validar JSON

La validación normalmente sigue estos pasos:

  1. Analiza la cadena JSON usando un analizador estándar como JSON.parse() en JavaScript o su equivalente en el lenguaje de tu elección.
  2. Comprueba si hay errores de sintaxis -- el analizador lanzará un error en la primera violación con un mensaje que indica la ubicación del problema.
  3. Corrige los errores de forma iterativa -- dado que los analizadores se detienen en el primer error, corrígelo y vuelve a validar hasta que el documento pase.

La mayoría de las herramientas JSON en línea combinan la validación con el formateo. Pega tu JSON y la herramienta comprueba la sintaxis al instante, resalta los errores con números de línea y columna, y produce una salida limpia e indentada. Esto es significativamente más rápido que depurar con excepciones de analizador en tu código.

Consejos para trabajar con JSON

  • Valida siempre antes de usar -- Nunca asumas que el JSON escrito a mano es válido.
  • Usa un linter -- Herramientas como ESLint con plugins de JSON detectan errores antes de que lleguen a producción.
  • Prefiere las librerías JSON -- Genera JSON con librerías de serialización en lugar de concatenación de cadenas para evitar errores de sintaxis sutiles.
  • Establece encabezados Content-Type estrictos -- Para las APIs, impón Content-Type: application/json para rechazar solicitudes malformadas de forma temprana.

Usa un validador y formateador de JSON gratuito en línea para comprobar tu sintaxis JSON al instante, localizar errores y formatear tus datos para que sean legibles. Tanto si eres un principiante que aprende lo básico como un desarrollador experimentado que depura una API de producción, nuestra herramienta Formateador y validador de JSON te ayuda a trabajar con datos JSON de forma eficiente.