Seguro que te ha pasado: agregas un // comentario temporal a tu configuración y el JSON.parse del navegador lanza Unexpected token /. No es un error de JSON, en realidad es sintaxis de JSON5, y los navegadores solo entienden JSON estricto. Este artículo recorre las diferencias principales entre JSON y JSON5, y cómo el formateador JSON de Piick usa el modo tolerante para mantener ambos formatos funcionando.
¿Cuál es exactamente la diferencia entre JSON y JSON5?
JSON es un subconjunto de JSON5. JSON5 relaja 6 reglas por encima del JSON estándar:
- Admite comentarios de una línea
//y comentarios de bloque/* */ - Las cadenas pueden usar comillas simples, no solo comillas dobles
- Los objetos y arrays pueden tener una coma final
- Las claves pueden ir sin comillas (siempre que sean identificadores válidos)
- Los números admiten hexadecimal (
0x1A),InfinityyNaN - Las cadenas pueden ocupar varias líneas (los separadores de línea se insertan como saltos de línea)
El JSON estándar rechaza todas estas. El conjunto de reglas fue propuesto originalmente por el creador de JSON, Douglas Crockford, y luego se formalizó como el estándar JSON5. Pero hoy en día, el JSON.parse nativo del navegador todavía solo acepta JSON estricto — la especificación avanzó, pero los motores no.
¿Qué problemas reales resuelve JSON5?
Los dos puntos más dolorosos son los comentarios y las comas finales. Los archivos de configuración necesitan unas líneas de comentarios para explicar el significado de los campos; el JSON estándar los prohíbe. Con los diffs de Git, añadir o quitar una coma final sacude todo el bloque (cada nueva entrada cambia dos líneas). package.json no usa directamente JSON5 porque la cadena de herramientas de npm solo acepta JSON estricto. Pero tus propios archivos de configuración, datos mock y borradores sí pueden usar JSON5 — solo convierte de vuelta a JSON estricto al final con una herramienta.
¿Por qué el JSON.parse nativo del navegador no es suficiente?
JSON.parse() solo entiende JSON conforme a la especificación. Los comentarios, las comillas simples y las comas finales lanzan inmediatamente un SyntaxError, y el mensaje de error solo dice Unexpected token sin indicarte la línea ni la columna. Depurar significa hacer búsqueda binaria. En el formateador JSON de Piick, activa el interruptor de modo tolerante y la herramienta eliminará automáticamente los comentarios, convertirá comillas simples a dobles y quitará las comas finales antes de formatear como JSON estándar.
Cómo Piick usa el modo tolerante para cubrir ambos mundos
Todo el pipeline se ejecuta localmente en tu navegador — los datos nunca salen de tu dispositivo:
- Pega tu cadena JSON5 en el cuadro de entrada
- Activa el modo tolerante
- Haz clic en “Formatear” — la herramienta primero convierte JSON5 a JSON estándar y luego lo muestra con sangría de 2 espacios, 4 espacios, tabulador o minificado
- Los errores muestran números de línea y columna precisos, sin búsqueda binaria
- Copia el resultado con un clic y pégalo en cualquier parser de JSON estricto
En resumen: el modo tolerante te permite escribir como JSON5, entregar como JSON — ambas partes felices. La próxima vez que escribas datos mock, no tendrás que pelearte con las comas finales.
Abre ahora el formateador JSON de Piick y prueba el modo tolerante. Pega directamente un borrador JSON5 y mira el resultado.