Formattatore JSON
Formatta, minimizza e valida il JSON e, se il parsing fallisce, scopri esattamente dove.
Input
0 caratteriOutput
Formatta, minimizza e valida il JSON e, se il parsing fallisce, scopri esattamente dove.
Il JSON che esce da un log di API o da un file di configurazione è di solito un'unica lunga riga, e il JSON che non si analizza di solito fallisce in un punto che non si vede. Questo lo indenta così da poterlo leggere, lo minimizza quando serve compatto, e quando è rotto indica la riga e la colonna e mostra quella riga.
Il più delle volte non sei qui per rendere il JSON bello - sei qui perché qualcosa lo ha rifiutato senza dire perché. Il parser indica la riga, la colonna e cosa si aspettava, e lo strumento stampa quella riga insieme alle due circostanti. Una virgola mancante a quattrocento righe dentro una configurazione è una correzione da trenta secondi una volta che sai dove si trova.
Il JSON non ha mai permesso né l'uno né l'altro, ma i file che le persone ti consegnano davvero - tsconfig, impostazioni di VS Code, qualsiasi cosa modificata a mano - ne sono pieni. Spuntare l'opzione li rimuove prima dell'analisi, e lo strumento indica poi quanti commenti e quante virgole ha rimosso. È opzionale ed è riportato con precisione perché un formattatore che altera silenziosamente il tuo documento è peggiore di uno che lo rifiuta.
Non indovina cosa intendevi. Oltre alle due rimozioni sopra, nulla viene riparato: una parentesi graffa non chiusa, una chiave tra apici singoli o una chiave senza virgolette viene segnalata, non riscritta. Ordinare le chiavi e reindentare non riordinano mai un array e non cambiano mai una stringa. La sezione successiva elenca i pochi casi in cui il risultato può comunque differire da ciò che hai incollato.
Il tuo JSON viene analizzato e riscritto, quindi alcune cose tornano normalizzate. I numeri vengono riscritti: 1.50 diventa 1.5, 1E3 diventa 1000.0 e -0 diventa 0, e un decimale con più cifre di quante ne contenga un float a 64 bit viene arrotondato (0.1000000000000000055 diventa 0.1). Gli interi restano esatti fino a 4.300 cifre (quelli più lunghi vengono rifiutati). Se un oggetto ripete una chiave, resta solo l'ultimo valore, senza avviso. NaN, Infinity e -Infinity vengono accettati e mantenuti anche se il JSON standard (RFC 8259) non li ammette, e un numero troppo grande per un float, come 1e400, esce come Infinity. Se qualcosa di tutto questo conta per il sistema che riceverà il file, controllalo tu prima di fidarti di un risultato senza errori.
Viene inviato al server per essere analizzato e rimandato direttamente nella stessa risposta. Nulla viene scritto su disco, memorizzato nella cache o registrato, e il registro di utilizzo conserva solo conteggi - dimensione, profondità di annidamento, modalità scelta - mai il documento.
Di solito commenti, virgole finali, apici singoli o chiavi senza virgolette - tutti comuni nei file di configurazione e nessuno di essi è JSON valido. Spunta "accetta commenti e virgole finali" per i primi due; gli altri sono genuinamente non validi e vanno corretti.
Fino a 2.000.000 di caratteri per richiesta; un testo più lungo viene rifiutato indicandone la lunghezza esatta. Per file di quella dimensione uno strumento a riga di comando come jq è lo strumento migliore.
Le pipeline di log e i loader in streaming leggono un oggetto JSON per riga invece di un unico grande array. Selezionalo e un array di primo livello torna come un record compatto per riga.
No. L'ordine delle chiavi di un oggetto non è significativo in JSON, e l'ordine di un array - che lo è - non viene mai toccato. L'ordinamento esiste perché due versioni dello stesso documento possano essere confrontate senza rumore.
In Excel per Microsoft 365, salvalo come file .json e scegli Data > Get Data > From File > From JSON (Dati > Recupera dati > Da file > Da JSON). Si apre Power Query: un array di primo livello appare come List, To Table (In tabella) lo trasforma in una colonna di Records, e il pulsante di espansione (due frecce) nell'intestazione distribuisce ogni chiave in una colonna propria; espandere un array annidato aggiunge una riga per elemento. Power Query richiede un solo documento JSON valido, quindi correggi prima qui ogni errore, indicato con riga e colonna, e salva l'output di Abbellisci o Minifica; l'output JSON Lines è pensato per gli strumenti di log. Questo strumento non converte da solo il JSON in CSV o Excel.
Python include un validatore: python -m json.tool data.json stampa il documento con rientro di 4 spazi oppure si ferma con un messaggio come Expecting ',' delimiter: line 3 column 3. Con jq installato, jq . data.json lo formatta e jq empty data.json si limita a controllarlo, senza stampare nulla se il file è valido. Nessuno dei due accetta commenti o virgole finali, quindi un file di configurazione che li contiene fallisce; incollalo qui e spunta "Consenti commenti e virgole finali" per vedere cosa è stato rimosso.
Il parser si aspettava una chiave di oggetto e ha trovato altro. Di solito le chiavi sono tra apici singoli o senza virgolette, come in {'name': 'Asha'} copiato da Python o JavaScript, che si ferma alla riga 1, colonna 2: JSON richiede le virgolette doppie attorno a ogni chiave e stringa, e questo strumento non riscrive mai le virgolette, quindi correggile tu. Lo stesso messaggio su una parentesi graffa di chiusura, come in {"a": 1,}, indica una virgola finale; spunta "Consenti commenti e virgole finali" per toglierla. Expecting value su True, False o None indica valori Python: JSON scrive true, false e null in minuscolo. In Python, json.dumps(data) produce JSON valido, print(data) no. Gli errori sono mostrati esattamente come li formula il parser di Python, in inglese, così puoi cercare il messaggio così com'è.
Il parser ha letto un valore JSON completo e poi ha trovato altro testo. Cause frequenti: un log JSON Lines (NDJSON) con un oggetto per riga, che si ferma alla riga 2, colonna 1; due documenti incollati uno dopo l'altro; oppure un commento // dopo l'ultima graffa di chiusura, che "Consenti commenti e virgole finali" rimuove. Questo strumento controlla un documento alla volta: incolla un solo record oppure racchiudi i record tra [ ] separandoli con virgole; scegliendo JSON Lines tornano poi uno per riga.