Che cosa fa questo strumento
Reindenta. I caratteri che compongono ogni valore restano esattamente quelli che hai digitato.
{"id":12345678901234567890,"ratio":1.0,"enorme":1e400}
{
"id": 12345678901234567890,
"ratio": 1.0,
"enorme": 1e400
}
La via ovvia cambia i tuoi numeri
Passa lo stesso input attraverso l’implementazione ovvia — JSON.parse poi JSON.stringify — e tutti e tre i valori cambiano:
| scritto | dopo un giro di analisi e stampa |
|---|---|
12345678901234567890 | 12345678901234567000 |
1.0 | 1 |
1e400 | null |
Un numero JavaScript è un valore in virgola mobile a doppia precisione. Regge una quindicina di cifre, non ricorda che avevi scritto un punto decimale, e oltre circa 1,8 × 10³⁰⁸ diventa infinito — che JSON non sa rappresentare e che si stampa null.
Nulla di tutto ciò è una curiosità di arrotondamento. 12345678901234567890 è la forma di uno snowflake di Twitter, di un bigint PostgreSQL o di una referenza di pagamento, e un formattatore che la modifica ti restituisce un file che non punta più alla stessa riga.
Questo strumento legge ogni numero come il testo che è e riscrive quel testo.
Le chiavi doppie sono rifiutate, non arbitrate
{ "port": 8080, "host": "example.com", "port": 3000 }
La RFC 8259 dice che i nomi di un oggetto dovrebbero essere unici — un «dovrebbero», non un «devono» — e non dice nulla su che fare altrimenti. In pratica i parser divergono: la maggior parte tiene l’ultimo, alcuni il primo, altri rifiutano il documento.
Scegliere al posto tuo produrrebbe un file che non dice più la stessa cosa, senza nulla che lo segnali. Lo strumento si ferma e indica la posizione della seconda chiave.
Solo JSON stretto
Niente commenti, niente virgola finale, niente stringhe tra apici singoli. Quelli si chiamano JSON5 e JSONC: linguaggi diversi che abitano file chiamati .json.
Accettarli significherebbe produrre un’uscita che metà dei parser del mondo rifiuta, cioè il contrario di ciò a cui serve un formattatore. Il messaggio d’errore indica la posizione del carattere che ha rotto.
Le due impostazioni
Indentazione — due spazi di default. Zero produce la forma minificata.
Ordinare le chiavi — alfabeticamente, in modo ricorsivo, con gli array nel loro ordine. Comodo prima di confrontare due file; lascialo spento quando l’ordine delle chiavi ha un senso.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.