Datos

Corregir errores de sintaxis JSON: los 7 fallos más comunes y cómo ordenar un JSON

Respuestas de API, archivos de configuración, registros: JSON es el formato de datos que más leen los desarrolladores. Aun así, una sola coma o comilla puede provocar un error «Unexpected token». Así puedes encontrar la causa rápidamente.

Las reglas básicas

JSON (JavaScript Object Notation) es un formato de texto estandarizado en la RFC 8259 y ECMA-404. Nació de JavaScript, pero hoy lo admiten casi todos los lenguajes. Solo hay seis tipos de valor: cadena, número, booleano (true/false), null, array y objeto.

Los objetos enumeran pares "clave": valor entre llaves y los arrays enumeran valores entre corchetes, separados por comas. Las claves deben ser cadenas entre comillas dobles. Como las reglas son simples, son estrictas: una notación permitida en código JavaScript puede ser un error en JSON.

{
  "id": 1024,
  "name": "AIBIZAP",
  "active": true,
  "tags": ["tools", "guides"],
  "owner": null
}

Siete errores que provocan fallos de análisis

Mira justo antes de la posición que indica el mensaje de error: casi siempre la causa es una de estas. Pegar el documento en un formateador JSON lo reindenta y hace fácil localizar la línea problemática.

  • Comas finales: [1, 2, 3,] no es válido.
  • Comillas simples: usa "name", nunca 'name'.
  • Claves sin comillas: {name: "a"} es un objeto de JavaScript, no JSON.
  • Comentarios: el JSON estándar no admite comentarios // ni /* */.
  • Escapes que faltan: dentro de las cadenas escribe \" para las comillas, \\ para las barras invertidas y \n para los saltos de línea. Una ruta de Windows sin escapar como C:\Users rompe el documento.
  • Valores especiales: NaN, Infinity y undefined no existen en JSON. Usa null para los valores ausentes.
  • BOM y caracteres invisibles: un BOM UTF-8 al inicio del archivo o un espacio de no separación copiado sin querer pueden hacer fallar el análisis en el primer carácter.

Cuidado con los números grandes y los decimales

El estándar JSON no limita el tamaño de los números, pero JavaScript almacena todos los números como coma flotante de 64 bits. Los enteros mayores que 2^53 (9.007.199.254.740.992) no se pueden representar con exactitud, así que los ID largos enviados como números pueden ver alterados sus últimos dígitos en el navegador.

Envía esos valores como cadenas desde el principio, por ejemplo "id": "1234567890123456789". Con el dinero ocurre algo parecido —0,1 + 0,2 da 0,30000000000000004 en coma flotante—, por lo que los importes suelen enviarse como enteros en céntimos o como cadenas.

JSON no tiene tipo fecha

Las fechas suelen enviarse como cadenas ISO 8601 ("2026-10-28T09:00:00Z") o como marcas de tiempo Unix (1793178000). Se recomienda ISO 8601 con una Z final (UTC) o un desfase explícito como +01:00, porque es legible y no deja lugar a dudas.

Un valor sin zona horaria, como "2026-10-28 09:00", obliga al receptor a adivinar si es la hora del servidor o la del usuario, lo que provoca errores como desfases de varias horas.

Formatear y minificar

Añadir sangría y saltos de línea hace que el JSON sea más fácil de leer; quitar todos los espacios lo hace más ligero de transferir. El significado es idéntico, así que formatea mientras depuras y minifica para transportar o almacenar.

Mantén formateados en el control de versiones los JSON que editan personas, como los archivos de configuración, para que los cambios sean fáciles de revisar. El orden de las claves no tiene significado, pero ordenarlas hace que las diferencias sean mucho más legibles.

Convertir JSON en código y tablas

A partir de una respuesta de API de ejemplo, a menudo necesitas las clases equivalentes en C#, Java, Python o TypeScript. Copiar decenas de campos a mano invita a errores; el generador de clases JSON deduce los tipos del ejemplo y escribe el código del modelo por ti.

Para guardar los mismos datos en una base de datos, el generador de DDL desde JSON redacta una sentencia CREATE TABLE. Los tipos deducidos se basan solo en los valores de tu ejemplo, así que revisa los campos que admiten null, la longitud de las cadenas y las claves primarias antes de darlo por bueno.

Pruébalo con estas herramientas

Más guías

Todas las guías