JSON5 → JSON
FormatoTodo se ejecuta en tu navegador: no se sube nada
Pasa un documento JSON5 a JSON estricto. JSON5 es un superconjunto de JSON: añade comentarios (`//` y `/* */`), claves sin comillas (incluidos identificadores no ASCII), cadenas con comillas simples, comas finales, números hexadecimales, un `+` inicial, las formas `.5` / `5.`, y `Infinity` y `NaN`. Los archivos de configuración lo usan por todas partes (VS Code, Babel, partes de TypeScript y ESLint), mientras que muchas herramientas solo aceptan JSON estricto. Solo hay una dirección, y hay una razón: JSON ya es un subconjunto de JSON5, así que «JSON → JSON5» es la transformación identidad. Ofrecerla como opción daría a entender que hace algo más (¿añadir comentarios? ¿cambiar a comillas simples?), y no lo hace. Si necesitas esa dirección, un documento JSON estándar ya *es* un documento JSON5 válido: úsalo tal cual. Es una implementación completa, no un subconjunto «que basta»: `\x41`, `\u{1F600}`, las continuaciones de línea y `+Infinity` se tratan según la norma, y los errores vienen con línea y columna. ⚠️ Dos pérdidas de conversión conocidas, ambas anotadas abajo: JSON no puede expresar `Infinity` ni `NaN`, así que pasan a `null`; y los comentarios nunca sobreviven, porque JSON no tiene dónde ponerlos.
Funciones
- Comentarios `//` de línea y `/* */` de bloque, en cualquier parte del documento
- Claves sin comillas, incluidos identificadores no ASCII y los que empiezan por `$` o `_`
- Cadenas con comillas simples (que pueden contener comillas dobles sin escapar)
- Comas finales en objetos, arrays y estructuras anidadas
- Hex `0xFF`, un `+` inicial y las formas `.5` / `5.`
- `Infinity`, `-Infinity` y `NaN` (JSON no tiene ninguno de los tres)
- `\x41`, `\u{1F600}` y las continuaciones de línea se tratan según la norma
- Los errores de análisis señalan una línea y una columna en vez de decir «formato incorrecto»
- ⚠️ Una clave `__proto__` se convierte en una propiedad normal y no contamina el prototipo
- La salida es JSON estricto, legible por cualquier herramienta que solo acepte JSON
Cómo se usa
- Pega JSON5: los comentarios, las claves sin comillas y las comas finales no son problema
- El resultado se actualiza mientras escribes
- Elige un sangrado, o déjalo en una sola línea
- Copia el resultado
Preguntas frecuentes
- ¿Por qué no hay una dirección «JSON → JSON5»?
- Porque es la transformación identidad. JSON5 es un superconjunto estricto de JSON (ese era su objetivo de diseño), así que cualquier documento JSON válido ya es un documento JSON5 válido: no hay nada que convertir. Como botón, o no haría nada (y parecería roto) o se tomaría libertades de estilo —quitar las comillas de las claves, pasar a comillas simples—, y esas son decisiones de estilo que una herramienta no debería tomar por ti.
- ¿Dónde se fueron los comentarios?
- Se descartan, y solo pueden descartarse: JSON no tiene sintaxis que pueda llevar un comentario, y el JSON estricto los prohíbe sin más. Es una diferencia entre los formatos, no una decisión de esta implementación. Si esos comentarios importan —notas explicativas, un interruptor comentado— conserva el archivo original en lugar de tratarlo como un intermedio desechable.
- Infinity y NaN se volvieron null, ¿es un error?
- No, aunque sí es una pérdida real: JSON sencillamente no puede representarlos. `JSON.stringify(Infinity)` es `null` por definición del lenguaje, y cualquier herramienta que emita JSON estricto hace lo mismo. Que JSON5 permita `Infinity` / `NaN` es una de sus extensiones, y el JSON estándar no tiene sintaxis para ello. Si tus datos llevan esos valores, lo que necesitas es una convención acordada (como la cadena `"Infinity"`) compartida con quien los consuma: un conversor no puede decidirlo por su cuenta.
- ¿El analizador es propio o una librería?
- Propio, por el motivo contrario al de las herramientas de YAML y TOML de este sitio. Aquellas son difíciles porque «lo mismo se puede escribir de diez maneras», así que un subconjunto propio acabará malinterpretando algo en silencio, y por eso usan una librería madura. La gramática de JSON5 está cerrada y congelada (1.0 en 2018, sin cambios desde entonces) y se reduce a comentarios, claves sin comillas, comillas simples y comas finales sobre JSON, así que una implementación completa es abordable. La corrección la ancla una prueba diferencial: para cualquier entrada JSON válida, este analizador debe coincidir con `JSON.parse` campo a campo.
Herramientas relacionadas
Formateador JSON
FormatoFormatea, valida y repara JSON en línea: árbol plegable, búsqueda de claves y valores, edición nodo a nodo y errores con línea y columna.
Conversor JSONL
FormatoConvierte JSONL (NDJSON) y arrays JSON en ambos sentidos: analiza línea a línea e indica la línea que falla, salta las líneas vacías y trata CRLF y BOM.
JS: minificar y embellecer
FormatoMinifica JavaScript (quita comentarios y espacios, conserva las licencias /*!) o lo embellece reindentando por llaves y puntos y coma. Nada se sube.
JSON a código
FormatoConvierte una muestra JSON en interfaces de TypeScript, structs de Go, clases de Java o structs de Rust; las claves que faltan salen opcionales.
Formateador SQL
FormatoFormatea SQL en línea: una cláusula por línea, palabras clave con el mismo estilo y subconsultas sangradas. El minificador quita los comentarios.
Formateador XML
FormatoFormatea XML en línea por niveles de etiqueta, con comentarios, CDATA y DOCTYPE en su propia línea y los valores de atributo intactos.