Dónde JSON es más estricto que un objeto literal de JS

JSON exige comillas dobles en nombres de propiedades y cadenas. No admite comentarios, comas finales, undefined, funciones, NaN ni Infinity. JSON.parse() también rechaza caracteres adicionales antes o después del único valor principal. JavaScript permite varias de esas formas, por eso el código copiado puede fallar.

REGLA ✗ INVÁLIDO ✓ VÁLIDO Claves del objeto nombre: "nombre": Valores de cadena 'Ada' "Ada" Comas sobrantes ["a","b",] ["a","b"] Comentarios // una nota (no permitidos) JSON.parse() exige las cuatro, y el mensaje de error indica la línea y columna exactas donde falló.

Por qué importa la sangría (pretty-printing)

Una respuesta de API o un archivo de configuración minificado suele venir como una sola línea sin cortes; técnicamente válido, pero ilegible en el momento en que necesitas revisar un valor anidado o compararlo con otra cosa. Aplicar sangría no cambia los datos en absoluto, simplemente vuelve a serializar la misma estructura ya analizada con espacios en blanco que una persona puede leer.

Cuándo minificar en su lugar

Minificar hace lo contrario: elimina todo espacio no esencial, así que los mismos datos ocupan menos espacio. Eso importa cuando vas a pegar el JSON en algún sitio con límite de caracteres, guardarlo de forma compacta, o enviarlo por una red donde cada byte cuenta; ninguno de esos casos se beneficia de una sangría que una máquina no necesita.

Errores de sintaxis JSON comunes y sus causas

  • Coma sobrante; dejar una coma después de la última propiedad o elemento de un array, un hábito heredado de JavaScript (donde es inofensivo) o de editar una lista y olvidar quitar el separador anterior.
  • Cadenas con comillas simples; copiar directamente un objeto literal de JavaScript, donde comillas simples y dobles son intercambiables; JSON solo acepta comillas dobles.
  • Claves sin comillas; misma causa: JavaScript permite claves como identificadores sin comillas (nombre:), JSON exige "nombre":.
  • Corchetes o llaves que no coinciden o faltan; un {, }, [ o ] de más o de menos, normalmente por editar datos anidados a mano.
  • Falta una coma entre propiedades; fácil de pasar por alto al reformatear JSON a mano en lugar de dejar que lo haga un formateador.

Detalles de análisis y formato

JSON estricto no admite comentarios. JSON5 y JSONC son sintaxis diferentes que añaden comodidades y pueden ser rechazadas por un analizador estándar.

El orden de miembros normalmente no debería tener significado en un objeto JSON, pero algunos consumidores, firmas, snapshots y comparaciones textuales dependen de la serialización. Ordenar claves transforma la salida y puede ser inadecuado en esos casos.

¿Por qué mi error de JSON.parse solo dice "position 45" en lugar de un número de línea? Así lo reporta V8 (el motor de JavaScript de Chrome); un formateador puede convertir ese desplazamiento de caracteres en una línea y columna contando los saltos de línea hasta esa posición, que es exactamente lo que debería mostrar un mensaje de error útil.

Formatea tu JSON

El Formateador de JSON de Orisod valida, aplica sangría, minifica y puede ordenar claves en tu navegador. Revisa los cambios cuando importe la serialización exacta o una firma.

Formatear JSON →

La mayoría de los errores "JSON.parse unexpected token" se reducen a una de las mismas causas: una coma sobrante, una comilla simple copiada y pegada, o una clave sin comillas. Una vez que conoces la breve lista de reglas, la solución suele estar a cinco segundos de leer el mensaje de error.