Los 8 errores más comunes en JSON y cómo arreglarlos
Comas finales, comillas simples, comentarios, números mal escritos… qué significa cada error y cómo corregirlo.
Última revisión:
Por qué JSON es tan estricto
JSON nació como un subconjunto de JavaScript pensado para intercambiar datos entre programas, y su especificación (RFC 8259) es deliberadamente pequeña: sin comentarios, sin comas opcionales y sin tipos especiales. Esa rigidez es una ventaja, porque cualquier lenguaje lo lee igual, pero hace que un solo carácter fuera de lugar invalide el documento entero.
La mayoría de errores vienen de escribir JSON a mano «como si fuera JavaScript» o de copiarlo desde un archivo de configuración que admite más cosas, como JSON5 o YAML.
Los errores que más se repiten
Estos son los fallos que encontrarás en nueve de cada diez JSON inválidos:
- Coma final: [1, 2, 3,] o {"a": 1,}. Quita la coma antes de ] o }.
- Comillas simples: {'id': 1}. Textos y claves van siempre entre comillas dobles.
- Claves sin comillas: {id: 1}. Escribe {"id": 1}.
- Comentarios: // o /* */ no están permitidos. Si necesitas documentar, usa una clave como "_comentario".
- Literales en mayúscula o inexistentes: True, False, None, undefined o NaN. Usa true, false o null.
- Números mal escritos: ceros a la izquierda (007), + inicial, .5 sin cero o 1. sin decimales.
- Saltos de línea dentro de un texto: deben escribirse como \n.
- Barras invertidas sin escapar, típicas en rutas de Windows: escribe C:\\Users en lugar de C:\Users.
Cómo leer el mensaje de error
Los navegadores suelen decir algo como «Unexpected token } in JSON at position 42». La posición indica dónde se dio cuenta el analizador, que no siempre es donde está el fallo: una coma que falta se detecta en el elemento siguiente, y una comilla sin cerrar puede detectarse muchas líneas después.
Nuestro validador traduce esos mensajes a una causa probable, indica línea y columna y marca el punto exacto, lo que reduce la búsqueda a un vistazo.
Problemas que no son errores, pero muerden
Un JSON puede ser válido y aun así darte problemas. Las claves duplicadas están permitidas por la especificación, pero casi todos los lectores se quedan solo con el último valor, sin avisar. Y los enteros mayores que 2^53 (9.007.199.254.740.991) pierden precisión en JavaScript: un identificador como 12345678901234567890 se convierte silenciosamente en otro número.
Si trabajas con identificadores muy largos, envíalos como texto ("12345678901234567890") en lugar de como número.
Un flujo de trabajo sin sustos
Antes de pegar un JSON en una API o un archivo de configuración:
- Valídalo y corrige el primer error que aparezca; a veces uno arrastra a los demás.
- Formatéalo con sangría para revisar la estructura de un vistazo.
- Si vas a comparar dos versiones, ordena las claves para que las diferencias salten a la vista.
- Minifícalo solo al final, si el tamaño importa.