CONCEPTOS BASE

JSON

Formato de intercambio de datos basado en texto, ligero y legible por humanos y máquinas. Estándar de facto en APIs web modernas.

Nivel · principiante4 min de lecturaActualizado 22 may 2026
También conocido como: JavaScript Object Notation

Definición

JSON (siglas de JavaScript Object Notation) es un formato de intercambio de datos basado en texto plano, ligero y legible por humanos. Surgió como una forma natural de serializar objetos de JavaScript pero rápidamente se convirtió en el formato universal para mover datos entre sistemas.

Hoy, prácticamente cualquier API web moderna envía y recibe datos en JSON. También es el formato típico para archivos de configuración (package.json, tsconfig.json, composer.json...), respuestas de webhooks, mensajes en colas, y casi cualquier cosa que necesite "datos estructurados sobre texto".

A pesar del nombre, JSON no depende de JavaScript: lo usa Python, Java, PHP, C#, Go, Rust... cualquier lenguaje moderno tiene soporte nativo o muy maduro para parsearlo y generarlo.

Sintaxis

JSON tiene 6 tipos de datos y reglas muy simples:

TipoEjemplo
Objeto{ "clave": "valor" }
Array[1, 2, 3]
String"hola mundo" (siempre con comillas dobles)
Número42, 3.14, -7
Booleantrue, false
Nullnull

Reglas:

  • Claves siempre entre comillas dobles (a diferencia de JavaScript)
  • Comas separando elementos, pero no coma al final del último (esto rompe parsers estrictos)
  • No admite comentarios (al revés que YAML o JavaScript)
  • No admite fechas como tipo nativo — se serializan típicamente como string ISO 8601

Ejemplo práctico

Respuesta típica de una API REST consultando un pedido en IMDICA:

{
  "id": "PED-2026-0142",
  "fecha": "2026-05-20T10:34:00Z",
  "cliente": {
    "id": 87,
    "nombre": "Talleres García",
    "cif": "B12345678"
  },
  "lineas": [
    {
      "producto": "FRC-010-CAR",
      "descripcion": "Fresa de carburo Ø10mm",
      "cantidad": 5,
      "precio": 23.50,
      "subtotal": 117.50
    },
    {
      "producto": "MAC-M8-HSS",
      "descripcion": "Macho HSS M8",
      "cantidad": 12,
      "precio": 4.20,
      "subtotal": 50.40
    }
  ],
  "total": 167.90,
  "estado": "pendiente_envio",
  "incidencia": null
}

Fíjate: objetos anidados (cliente), arrays de objetos (lineas), tipos mixtos (números, strings, null). Todo encaja sin esfuerzo en cualquier lenguaje moderno.

JSON vs alternativas

FormatoProsContras
JSONUniversal, simple, soporte nativo en todos los lenguajesNo admite comentarios, sin tipos avanzados (fechas, binarios)
YAMLPermite comentarios, más legible para humanos, super-set de JSONMás complejo de parsear, espacios significativos (peligroso)
XMLSoporte de esquemas y namespaces, validación estrictaVerboso, más lento de parsear, anticuado para APIs
CSVCompacto para datos tabulares, abrible en ExcelSin estructura jerárquica, problemas con comas y comillas
Protobuf / MessagePackBinario y ultra eficienteNo legible por humanos, requiere schemas

Para APIs web públicas y datos jerárquicos, JSON gana casi siempre.

Errores comunes

  • Usar comillas simples: en JavaScript funciona, en JSON puro NO. Solo comillas dobles.
  • Coma al final del último elemento: { "a": 1, "b": 2, } — los parsers estrictos lo rechazan. Quítala siempre.
  • Embebir HTML sin escape: si dentro de un string JSON metes HTML con comillas, debes escaparlas. Mejor usa JSON.stringify que lo hace por ti.
  • Asumir que JSON conserva el orden de claves: el estándar no lo garantiza, aunque la mayoría de implementaciones modernas sí. Si el orden importa, usa un array.
  • Pasar objetos JavaScript directamente a fetch: siempre necesitas JSON.stringify antes — fetch no serializa automáticamente.
  • Olvidar el header Content-Type: application/json: sin él, el servidor puede no parsear el body como JSON.
  • Confundir JSON con JavaScript: JSON es un sub-conjunto. Hay JavaScript válido que NO es JSON (funciones, undefined, comentarios, propiedades sin comillas, etc.).

Trabajar con JSON en código

// Objeto → JSON string (serializar)
const obj = { nombre: 'IMDICA', activo: true, productos: 47 };
const texto = JSON.stringify(obj);
// → '{"nombre":"IMDICA","activo":true,"productos":47}'

// JSON string → objeto (parsear)
const data = JSON.parse(texto);
console.log(data.productos); // → 47

// Pretty print con indentación de 2 espacios
console.log(JSON.stringify(obj, null, 2));

Cuándo NO usar JSON

  • Archivos de configuración complejos con comentarios → mejor YAML o TOML
  • Datos binarios (imágenes, audio) → usa binary direct, no embebido en JSON base64 salvo casos puntuales
  • Streaming de eventos a alta frecuencia → mejor formatos binarios como Protobuf o MessagePack
  • Datos tabulares para Excel → CSV es más práctico

Referencias

Tagsformatodatosapiintegración