Tre modalità, un solo spazio di lavoro. Formatta, Valida e Confronta condividono lo stesso parser e lo stesso editor, così un documento si comporta allo stesso modo qualunque modalità lo legga, e passare dall'una all'altra non riformatta mai ciò che hai incollato.
Che cosa fa ogni modalità
| Modalità | Che cosa fa |
|---|
| FormattaRiscrive | Reindentare con due spazi, quattro spazi o tabulazioni, togliere di nuovo gli spazi, oppure ordinare le chiavi in modo ricorsivo nei due sensi. Valori, sequenze di escape e Unicode tornano esattamente come sono entrati, e gli array mantengono il loro ordine. |
| ValidaLocalizza | Nomina il difetto e lo indica, invece di dire che il documento non è valido e lasciarti cercare dove. |
| ConfrontaConfronta i dati | Due documenti confrontati per quello che significano, con ogni cambiamento etichettato come aggiunto, rimosso, modificato o di tipo cambiato. |
I difetti vengono localizzati, non solo segnalati
Vengono nominate diciannove cause distinte, ciascuna con la sua riga, la sua colonna e il suo scostamento in byte, e le righe vicine sono stampate con un accento circonflesso sotto il carattere. Una virgola prima di una parentesi di chiusura, una chiave tra apici singoli, una parola nuda, un commento, una sequenza di escape non valida e un carattere di controllo grezzo dentro una stringa si leggono come sé stessi anziché come un unico errore di analisi generico.
Due difetti che un documento valido può comunque portarsi dietro
Entrambi vengono segnalati su documenti che si analizzano puliti, perché entrambi cambiano i tuoi dati in silenzio. Una chiave duplicata non la recupera più nulla: JSON.parse tiene solo l'ultimo valore, e lo stesso fa ogni altro parser che incontrerai, quindi l'avviso nomina la chiave e la sua riga per poter correggere la sorgente. Un intero oltre 2^53 cambia valore nel momento in cui JavaScript lo legge, ed è così che un identificatore a 64 bit diventa silenziosamente un altro identificatore.
Che cosa il confronto si rifiuta di chiamare differenza
Indentazione, fine riga e l'ordine in cui sono state scritte le chiavi di un oggetto non hanno significato in JSON, quindi non sono differenze. L'ordine di un array invece ne ha e viene confrontato come sequenza, ed è per questo che un elemento inserito si legge come un inserimento e non come se fosse cambiato ogni elemento successivo.
Leggere un documento troppo grande da scorrere
- L'albero si apre un livello per volta, così un file grande non diventa una pagina grande. Ogni riga porta il percorso che la raggiunge, users[4].email, con un pulsante per copiare il percorso o il valore.
- Ricerca per chiave, per valore o per entrambi, con un conteggio delle corrispondenze e un passaggio tra i risultati.
- Le statistiche compaiono appena il documento viene analizzato: chiavi, oggetti, array, stringhe, numeri, booleani, valori nulli, profondità massima, dimensione e righe.
- Conversioni in YAML, in un'interfaccia TypeScript o in CSV. Quando un documento non può essere una tabella, la via CSV dice quale forma avrebbe richiesto invece di produrre qualcosa di fuorviante.
Il tetto è 5 MiB. Oltre i 300 KiB circa i colori della sintassi si spengono perché la digitazione resti fluida, e sui documenti molto grandi il confronto dettagliato si ferma prima e lo dice; validazione e statistiche continuano a funzionare su tutto l'intervallo.
Dietro questa pagina non c'è alcun endpoint API. Il documento viene analizzato nella memoria del browser e non raggiunge mai un server, nulla viene scritto nell'archiviazione o nella barra degli indirizzi, e l'unica cosa che resta tra una visita e l'altra è l'indentazione che hai scelto.