FAQ sull'uso degli strumenti: dati, file ed esportazione
In sintesi: I dati vengono caricati, quanto grande può essere un file, qualcosa viene memorizzato localmente, perché il cinese diventa escape: dieci domande che esplicitano i confini reali di uno strumento JSON online.

In sintesi: parsing, formattazione, diff e interrogazione girano interamente nel tuo browser e continuano a funzionare offline; cancella la cronologia in localStorage dopo aver gestito dati sensibili; e oltre i 10 MB passa agli strumenti di streaming da riga di comando invece di incollare il file nel browser.
Prima di incollare un payload sensibile in uno strumento online, sappi dove finisce. Questo articolo copre solo il comportamento a runtime dello strumento, non la sintassi.
1. Dati e privacy
Il formattatore JSON online carica i miei dati su un server?
No. Parsing, formattazione, minificazione, diff e interrogazione avvengono tutti nel browser, e la pagina non invia mai a un server applicativo nulla di ciò che incolli.
Non devi leggere un'informativa sulla privacy per capire se uno strumento online carica i dati; basta il pannello di rete del browser:
- Apri gli strumenti per sviluppatori, passa al pannello Rete e attiva la persistenza dei log;
- Incolla un po' di JSON e fai clic su "Formatta";
- Osserva se compare una nuova richiesta XHR o fetch, e se il suo corpo contiene il tuo contenuto.
Per uno strumento davvero locale, questo passaggio mostra solo richieste di asset statici. Al contrario, se una singola azione di formattazione produce POST /api/format
il cui corpo è il tuo testo originale, allora i dati hanno già lasciato il browser, qualunque cosa affermi la pagina.
Ogni strumento di questo sito è un'implementazione puramente front-end, e l'output di build non contiene alcuna API server. Dopo essere andato offline, un aggiornamento che colpisce la cache funziona ancora, il che è anche il modo più diretto per capire se qualcosa è "completamente locale".
Posso usarlo comunque offline?
Sì, a condizione che la pagina sia stata caricata almeno una volta.
Gli asset del sito vengono scaricati nella cache del browser alla prima visita, quindi anche senza rete in seguito, formattazione, minificazione, conversione JSON5 e query JSONPath continuano a funzionare. Falliscono solo le funzionalità dipendenti dalla rete, come il controllo di una nuova versione o il download dell'installer desktop.
Il test offline è allo stesso modo un buon modo per verificare che "i dati non se ne vanno mai": se tutto si rompe nel momento in cui ti disconnetti, ogni azione stava parlando con un server.
Qualche dato viene memorizzato localmente? Come lo cancello?
Sì, ma solo nel localStorage del browser corrente, e solo cronologia e impostazioni dell'interfaccia.
- Cronologia: le ultime 100 voci elaborate in ordine cronologico inverso, usate per richiamare i dati incollati in precedenza;
- Impostazioni dell'interfaccia: tema, lingua, preferenze di indentazione e così via;
- Non memorizzati: il file stesso, i record di caricamento o qualsiasi cosa che porti un'identità.
Esistono tre modi per cancellarle, dal più ristretto al più ampio:
| Metodo | Ambito | Quando usarlo |
|---|---|---|
| "Cancella cronologia" nella pagina della cronologia | Elimina solo la cronologia, mantiene le impostazioni | Dopo aver gestito dati sensibili |
Eseguire localStorage.clear() negli strumenti per sviluppatori |
Tutti i dati locali di questo sito | Per diagnosticare impostazioni anomale |
| "Cancella dati di navigazione" del browser per questo sito | Cookie, cache e archiviazione insieme | Prima di usare un computer condiviso |
Quando gestisci dati di produzione su un computer condiviso, cancella la cronologia al termine invece di limitarti a chiudere la scheda — localStorage non scompare alla chiusura di una scheda.
Perché i caratteri cinesi sono diventati \u4e2d\u6587?
Perché la funzione "escape" converte i caratteri non ASCII in sequenze di escape Unicode. È un comportamento voluto, non mojibake.
\u4e2d è il code point del carattere 中 (U+4E2D). Le due forme sono semanticamente identiche in JSON e si analizzano nella stessa stringa:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
Quando serve l'escape? Quando incorpori JSON in un vecchio sistema che accetta solo ASCII, quando lo scrivi in un header HTTP o quando lo annidi dentro un'altra stringa. Quando non serve? La maggior parte del trasporto API e dell'archiviazione su file non ne ha bisogno; memorizzare il cinese direttamente come UTF-8 risparmia byte — un carattere cinese occupa 3 byte, e 6 byte una volta sottoposto a escape.
Se vedi il cinese trasformarsi in \u4e2d, controlla prima se hai fatto clic sul pulsante "Escape" invece di sospettare che la codifica sia rotta.
2. File e dimensione
Quale dimensione di file è supportata?
Non c'è un limite rigido lato browser; i limiti reali provengono da tre punti:
| Fase | Collo di bottiglia approssimativo | Sintomo |
|---|---|---|
| Incollare in una casella di testo | 1–5 MB | L'input rallenta dopo l'incolla, ritardo del cursore |
JSON.parse |
50–100 MB | Il thread principale si blocca per secondi, pagina non risponde |
| Rendering dell'albero | 10k–20k nodi | Frame saltati durante l'espansione, scorrimento bloccato |
In altre parole, un file da decine di MB "può essere analizzato" ma "non è utilizzabile". Quando devi davvero elaborare questi dati, la mossa giusta non è cercare uno strumento online più potente, ma passare allo streaming (vedi FAQ su prestazioni e sicurezza).
Regola pratica: sotto i 2 MB uno strumento online resta fluido; tra 2 e 10 MB significa accettare un paio di rallentamenti; oltre i 10 MB preferisci uno script locale.
Il browser si blocca dopo che incollo. E ora?
Non aggiornare per primo — aggiornare perde il contenuto e devi incollare di nuovo. Recuperalo in questo ordine:
- Aspetta 10–30 secondi. Nella maggior parte dei casi il thread principale sta analizzando o renderizzando e si riprenderà da solo;
- Una volta ripreso, passa subito alla vista "Minifica" o comprimi l'albero per ridurre i nodi DOM;
- Copia il contenuto in un file locale e passa alla riga di comando:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
La prossima volta che incontri un file grande, esegui prima wc -c per vedere il numero di byte, poi decidi se incollarlo in un browser.
Perché la formattazione non cambia dopo che incollo?
Tre cause comuni, in ordine di frequenza:
- L'input è già minificato e non ha errori di sintassi: la formattazione regola solo l'indentazione, quindi se l'originale è davvero due righe, resterà due righe anche dopo — i newline dentro le stringhe non vengono espansi;
- Il contenuto non è JSON: per esempio hai incollato un letterale oggetto JavaScript (chiavi senza virgolette, virgolette singole), e il parser segnala un errore invece di formattare;
- Hai fatto clic sul pulsante sbagliato: minifica e formatta vanno in direzioni opposte, e minifica elimina tutta l'indentazione.
Come capirlo: guarda il conteggio dei caratteri nell'angolo in alto a destra dell'area di output. Dopo la formattazione il conteggio dovrebbe aumentare (indentazione e newline in più); se invece è diminuito, hai eseguito la minificazione.
3. Input e output
Come esporto il risultato in un file?
Tre modi, in ordine di affidabilità:
| Metodo | Azione | Quando usarlo |
|---|---|---|
| Pulsante di download | Fai clic su "Scarica" per produrre un file .json |
Risultati grandi che devono essere archiviati |
| Copia negli appunti | Fai clic su "Copia" | Risultati piccoli che incolli direttamente nel codice |
| Copia manuale con selezione | Seleziona l'area di output e premi Ctrl/Cmd + C |
Il ripiego quando il pulsante di copia fallisce |
Il file scaricato è codificato UTF-8 senza BOM per impostazione predefinita. Questo conta: JSON con un BOM si rompe del tutto in molti parser (vedi la sezione sul BOM nella FAQ su sintassi e formati).
JSON5 e JSONC sono supportati?
Sì, ma distingui "parsing" da "output".
- Lato input puoi incollare JSON5 (virgolette singole, chiavi senza virgolette, commenti, virgole finali, numeri esadecimali) o JSONC (solo commenti);
- Lato output puoi convertire in JSON standard, oppure convertire JSON standard di nuovo in JSON5 per rendere più facile la modifica manuale.
Emette sempre JSON standard quando attraversi sistemi. JSON5 è un dialetto per gli umani che scrivono configurazioni; un corpo di richiesta con
Content-Type: application/json che contiene commenti o virgole finali di solito viene rifiutato dal server.
4. Ambiente e compatibilità
Funziona su un telefono?
Sì. L'interfaccia si riflette in una singola colonna, e formattazione, minificazione, diff e JSONPath sono tutti conservati.
Ma gestire file grandi su un telefono è un'esperienza scadente: la tastiera virtuale copre il contenuto, selezionare il testo è difficile, e il browser può scartare la pagina quando cambi app, perdendo il contenuto. Accettabile come emergenza, ma giorno per giorno fallo su un desktop.
Perché lo stesso file si apre in Chrome ma dà errore in Safari?
Di solito non è una differenza del browser ma una differenza di codifica. Esamina in questo ordine:
- BOM: l'UTF-8 salvato dal Blocco note di Windows include un BOM, che alcuni parser non tollerano;
- Terminatori di riga: mescolare CRLF e LF non influisce su JSON stesso, ma sposta i numeri di riga degli errori segnalati, quindi sembra che "la posizione dell'errore sia sbagliata";
- Caratteri invisibili: il testo copiato da una pagina web può contenere spazi a larghezza zero (U+200B), invisibili all'occhio ma sufficienti a rompere la corrispondenza delle chiavi.
Un comando lo rivela:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
5. Riferimento rapido
| Domanda | Conclusione |
|---|---|
| Carica i dati | No, tutto viene elaborato localmente nel browser, e funziona offline |
| Dove sono memorizzati i dati | localStorage, solo cronologia e impostazioni, mai i file |
| Quale dimensione di file è ragionevole | Fluido sotto i 2 MB; oltre i 10 MB passa alla riga di comando |
Il cinese è diventato \u |
Hai fatto clic su escape; equivalente ma più voluminoso, e di solito non necessario |
| Si è bloccato, e ora | Aspetta il recupero → comprimi l'albero → copia fuori e usa jq |
| L'esportazione è senza BOM | Sì, UTF-8 senza BOM |
| I commenti sono supportati | JSON5/JSONC lato input; emetti JSON standard |