Qué hace inválido un JSON
JSON es más estricto que JavaScript, y los errores son casi siempre uno de unos pocos:
| Error | Por qué | Solución |
|---|---|---|
| {"a": 1,} | Coma final | Quitar la coma antes de } o ]. |
| {'a': 1} | Comillas simples | Cadenas y claves solo con comillas dobles. |
| {a: 1} | Clave sin comillas | Ponerla entre comillas: "a". |
| // comentario | No hay comentarios en JSON | Quitarlo, o usar JSON5 / JSONC donde el consumidor lo admita (ajustes de VS Code, tsconfig). |
| 0123, .5, NaN, Infinity | No son números válidos | Sin ceros iniciales, un dígito antes del punto, sin NaN/Infinity. |
| "salto de\nlínea" | Salto de línea real dentro de una cadena | Escaparlo como \n. |
| undefined | No es un valor JSON | Usar null. |
El modo tolerante elimina comentarios y comas finales y convierte las comillas simples antes de analizar, útil para archivos de configuración escritos a mano. La salida es siempre JSON estricto.
YAML
YAML es en espíritu un superconjunto de JSON (todo documento JSON es YAML válido), pero mucho mayor: la sangría determina la estructura, las cadenas suelen ir sin comillas y algunas palabras sueltas tienen significados sorprendentes. yes, no, on y off se convierten en booleanos en analizadores YAML 1.1, 022 puede convertirse en 18 octal, y 3.10 se convierte en 3.1. El conversor entrecomilla esos valores al generar YAML para que vuelvan intactos. La dirección YAML → JSON admite el subconjunto de bloque habitual: mapas, listas, escalares, cadenas entrecomilladas, colecciones de flujo y bloques | / >.
Documentos grandes
Todo se ejecuta en tu navegador, así que unos cuantos megabytes no son problema. Las estadísticas del árbol (profundidad, número de objetos y arrays) ayudan a detectar datos anidados de forma inesperada antes de cargarlos en algo que se atragante con ellos.
Preguntas
¿Por qué mi JSON es inválido si funciona en JavaScript?
Los literales de objeto de JavaScript permiten claves sin comillas, comillas simples, comas finales, comentarios y números hex. JSON no permite nada de eso. Activa el modo tolerante para ver la forma estricta.
¿Cómo encuentro el error en la línea 2000 de un archivo grande?
El validador indica línea y columna y muestra el texto alrededor del error. La mayoría de los editores saltan a una línea con Ctrl-G.
¿Formatear cambia los datos?
No. Formatear y minificar solo cambian los espacios en blanco. Ordenar claves cambia el orden, que JSON no considera significativo, aunque algunos consumidores (firmas, JSON canónico) sí.
¿Por qué un número perdió precisión?
Los números de JavaScript son doubles, así que los enteros por encima de 2⁵³ (unos 9 × 10¹⁵) se redondean al analizar. Si formateas un documento con IDs así, guárdalos como cadenas.