UltKit

Formattatore e validatore JSON

Basta incollare il JSON per indentarlo, minificarlo o ordinarne le chiavi. Se non è valido, il formattatore indica la riga e la colonna in cui il parser si è fermato, con un segno sotto il punto del problema: così una virgola mancante in una risposta di 3.000 righe si trova in pochi secondi.

Output

0 caratteri · 0 parole · 0 righe

0 caratteri · 0 parole · 0 righe

Funziona interamente in questa scheda del browser. Il testo non viene mai caricato né salvato.

Tipi di valore JSON

La RFC 8259 ammette esattamente questi valori. Oggetti e array possono annidarsi; tutto il resto è un valore foglia.

TipoEsempioRegola
Oggetto{"id": 7, "tags": ["a"]}Le chiavi devono essere stringhe tra doppi apici; i membri sono separati da virgole, senza virgola finale.
Array[1, "two", null]Elenco ordinato di valori qualsiasi, anche di tipi diversi.
Stringa"caf\u00e9 \"quoted\""Solo doppi apici; i caratteri di controllo vanno sottoposti a escape; le sequenze \u usano quattro cifre esadecimali.
Numero-12.5e3Solo decimale: segno meno facoltativo, nessuno zero iniziale, frazione ed esponente facoltativi. Niente NaN né Infinity.
Letterali: true, false, nulltrueMinuscolo, senza apici.

Cosa rifiuta il parser

Ogni input qui sotto è stato passato allo stesso JSON.parse usato dal formattatore quando è stata generata questa pagina.

InputProblemaJSON.parse
{"a": 1,}Virgola finaleRifiutato
{'a': 1}Stringhe con apici singoliRifiutato
{"a": 1 /* note */}CommentiRifiutato
{a: 1}Chiave senza apiciRifiutato
{"n": NaN}NaN non è un numero JSONRifiutato
{"n": 012}Zero inizialeRifiutato
{"n": 0x1F}Numero esadecimaleRifiutato

Sequenze di escape nelle stringhe JSON

CarattereScritto in JSON
Doppio apice"\""
Barra rovesciata"\\"
Avanzamento riga"\n"
Tabulazione"\t"
Ritorno a capo"\r"
Carattere di controllo U+0001"\u0001"
Barra (escape facoltativo)"/"
Lettera non ASCII (escape non necessario)"é"

Le regole di un documento JSON valido

JSON è definito dalla RFC 8259 (identica nella sostanza a ECMA-404). Un documento è un singolo valore: un oggetto, un array, una stringa, un numero, true, false o null. Le chiavi degli oggetti sono sempre stringhe tra virgolette doppie. Le stringhe usano solo virgolette doppie e devono usare l'escape per le virgolette, la barra rovesciata e ogni carattere di controllo inferiore a U+0020; tabulazioni e interruzioni di riga all'interno di una stringa si scrivono quindi \t e \n. La RFC 8259 richiede inoltre UTF-8 per i JSON scambiati tra sistemi.

I numeri sono decimali: niente zeri iniziali, niente esadecimale, niente NaN o Infinity e niente segno più davanti. Il formato non prevede commenti né virgole finali. Queste ultime due regole causano la maggior parte degli errori reali, perché i letterali oggetto di JavaScript, JSON5 e molti file di configurazione ammettono entrambi. La tabella di riferimento qui sotto è stata ottenuta fornendo ogni errore comune allo stesso parser usato dal formattatore.

Indentare, minificare, ordinare

La formattazione leggibile (pretty-print) aggiunge interruzioni di riga e rientri per rendere visibile la struttura; due spazi sono lo stile più comune nei progetti JavaScript, quattro spazi la scelta abituale con json.dumps(indent=4) di Python, mentre le tabulazioni lasciano a ciascuno la scelta della larghezza. La minificazione elimina ogni spazio superfluo, riducendo il peso dei payload delle API e permettendo di far stare un documento su una sola riga per log o variabili d'ambiente.

Ordina chiavi dispone in ordine alfabetico, in modo ricorsivo, i membri di ogni oggetto. Gli oggetti JSON per definizione non sono ordinati, quindi l'ordinamento non cambia il significato, ma rende molto più facile confrontare due documenti provenienti da sistemi diversi. Attenzione: il parsing trasforma i numeri in double di JavaScript; gli interi superiori a 2^53 (9.007.199.254.740.992), come alcuni ID di database, perdono precisione quando vengono riformattati, quindi conservateli come stringhe.

Dal JSON ad altri formati

Un documento formattato è più leggibile, ma a volte serve in un'altra forma. Un array di oggetti diventa un foglio di calcolo con da JSON a CSV, mentre il convertitore dati trasferisce interi file tra JSON, XML, YAML e CSV.

Domande frequenti

Perché il formattatore rifiuta il mio JSON con i commenti?
Il JSON standard non prevede una sintassi per i commenti: la RFC 8259 li esclude di proposito. Rimuovere i commenti, oppure mantenere il file come JSONC o JSON5 se lo strumento che lo legge supporta questi formati.
Che cosa significa «Unexpected token» in un errore JSON?
Il parser ha trovato un carattere che non può comparire in quella posizione, ad esempio un apice singolo, una virgola finale prima di } o una chiave senza virgolette. La riga e la colonna indicate puntano a quel carattere.
Ordinare le chiavi modifica i dati?
No. L'ordine dei membri di un oggetto non ha alcun significato in JSON, quindi il documento ordinato è equivalente. L'ordine degli array è significativo e non viene mai modificato.
Perché un numero lungo è cambiato dopo la formattazione?
JavaScript memorizza i numeri come float a 64 bit, che rappresentano esattamente gli interi solo fino a 2^53. Gli ID più grandi vengono arrotondati durante il parsing; trasmetterli come stringhe per conservare ogni cifra.
Si può formattare un file JSON invece di incollarlo?
Aprire il file in un qualsiasi editor di testo, selezionare tutto e incollarlo qui. File molto grandi, di decine di megabyte, possono rallentare la scheda mentre l'area di testo li visualizza.