Qué hace esta herramienta
Reindenta. Los caracteres que componen cada valor siguen siendo exactamente los que escribiste.
{"id":12345678901234567890,"ratio":1.0,"enorme":1e400}
{
"id": 12345678901234567890,
"ratio": 1.0,
"enorme": 1e400
}
La vía obvia cambia tus números
Pasa la misma entrada por la implementación obvia —JSON.parse y luego JSON.stringify— y los tres valores cambian:
| escrito | tras una ida y vuelta de análisis e impresión |
|---|---|
12345678901234567890 | 12345678901234567000 |
1.0 | 1 |
1e400 | null |
Un número de JavaScript es un flotante de doble precisión. Guarda unas quince cifras, no recuerda que escribiste un punto decimal, y más allá de unos 1,8 × 10³⁰⁸ se convierte en infinito, que JSON no sabe representar y que se imprime como null.
Nada de eso es una curiosidad de redondeo. 12345678901234567890 es la forma de un snowflake de Twitter, un bigint de PostgreSQL o una referencia de pago, y un formateador que lo cambia te devuelve un archivo que ya no apunta a la misma fila.
Esta herramienta lee cada número como el texto que es y vuelve a escribir ese texto.
Las claves repetidas se rechazan, no se arbitran
{ "port": 8080, "host": "example.com", "port": 3000 }
El RFC 8259 dice que los nombres de un objeto deberían ser únicos —un «debería», no un «debe»— y no dice qué hacer si no lo son. En la práctica los analizadores discrepan: la mayoría se queda con el último, algunos con el primero, otros rechazan el documento.
Elegir por ti produciría un archivo que ya no dice lo mismo, sin nada que lo señale. La herramienta se detiene y da la posición de la segunda clave.
Solo JSON estricto
Ni comentarios, ni comas finales, ni cadenas entre comillas simples. Eso es JSON5 y JSONC: lenguajes distintos que viven en archivos llamados .json.
Aceptarlos supondría producir una salida que la mitad de los analizadores del mundo rechaza, es decir, lo contrario de para lo que sirve un formateador. El mensaje de error nombra la posición del carácter que lo rompió.
Los dos ajustes
Indentación — dos espacios por defecto. Cero produce la forma minificada.
Ordenar claves — alfabéticamente, de forma recursiva, con los arrays en su orden. Práctico antes de comparar dos archivos; déjalo apagado cuando el orden de las claves signifique algo.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.