100 % locale — i tuoi dati non lasciano mai il tuo browser

Formattatore JSON — leggi un payload minificato

Indenta JSON lasciando i numeri come sono scritti. Un identificatore di venti cifre le tiene tutte: leggi la risposta, non una sua copia.

Istantaneo Privato Zero cookie
Indentazione

Input JSON

Output JSON

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:

scrittodopo un giro di analisi e stampa
1234567890123456789012345678901234567000
1.01
1e400null

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.

Domande frequenti

Perché altri formattatori cambiano i miei numeri?
Perché analizzano verso un valore JavaScript e lo ristampano, e un numero JavaScript è un valore in virgola mobile a doppia precisione. `12345678901234567890` diventa `12345678901234567000`, `1.0` diventa `1`, e `1e400` — oltre il più grande double — diventa `null`. Questo conserva il testo letterale di ogni numero: la formattazione cambia la disposizione e nient’altro.
Perché una chiave doppia è un errore?
Perché non esiste una risposta giusta. La RFC 8259 dice che i nomi di un oggetto *dovrebbero* essere unici e lascia indefinito il comportamento quando non lo sono: alcuni parser tengono il primo, la maggior parte l’ultimo, altri rifiutano. Scegliere in silenzio produrrebbe un documento che non dice più ciò che hai incollato. La posizione della seconda chiave è nel messaggio.
Può leggere JSON con commenti o virgola finale?
No. Quelli sono JSON5 e JSONC, linguaggi diversi con lo stesso nome sul file. Accettarli qui significherebbe produrre un’uscita che metà dei parser del mondo rifiuta. L’errore indica la posizione del carattere colpevole.

Convertitori correlati