Cosa rende un JSON non valido
JSON è più rigido di JavaScript, e gli errori sono quasi sempre uno di pochi casi:
| Errore | Perché | Soluzione |
|---|---|---|
| {"a": 1,} | Virgola finale | Togli la virgola prima di } o ]. |
| {'a': 1} | Apici singoli | Stringhe e chiavi usano solo i doppi apici. |
| {a: 1} | Chiave senza virgolette | Mettila tra virgolette: "a". |
| // commento | Niente commenti in JSON | Rimuovili, o usa JSON5 / JSONC dove il consumatore lo supporta (impostazioni di VS Code, tsconfig). |
| 0123, .5, NaN, Infinity | Numeri non validi | Niente zeri iniziali, una cifra prima del punto, niente NaN/Infinity. |
| "riga\nspezzata" | A capo letterale dentro una stringa | Scrivilo come \n. |
| undefined | Non è un valore JSON | Usa null. |
La modalità permissiva rimuove commenti e virgole finali e converte gli apici singoli prima dell’analisi, comodo per i file di configurazione scritti a mano. L’output è sempre JSON rigoroso.
YAML
YAML è nello spirito un superinsieme di JSON (ogni documento JSON è YAML valido) ma molto più vasto: l’indentazione definisce la struttura, le stringhe di solito non hanno virgolette, e alcune parole nude hanno significati sorprendenti. yes, no, on e off diventano booleani nei parser YAML 1.1, 022 può diventare l’ottale 18, e 3.10 diventa 3.1. Il convertitore mette tra virgolette questi valori quando emette YAML perché il round-trip funzioni. La direzione YAML → JSON supporta il sottoinsieme a blocchi più comune: mappe, liste, scalari, stringhe tra virgolette, collezioni flow e blocchi | / >.
Documenti grandi
Tutto gira nel tuo browser, quindi qualche megabyte va bene. Le statistiche dell’albero (profondità, numero di oggetti e array) aiutano a individuare dati annidati in modo inatteso prima di caricarli in qualcosa che si strozzerebbe.
Domande
Perché il mio JSON non è valido se funziona in JavaScript?
I letterali oggetto di JavaScript ammettono chiavi senza virgolette, apici singoli, virgole finali, commenti e numeri hex. JSON non ammette nessuno di questi. Attiva la modalità permissiva per vedere quale sarebbe la forma rigorosa.
Come trovo l’errore alla riga 2000 di un file grande?
Il validatore riporta riga e colonna e mostra il testo attorno all’errore. La maggior parte degli editor salta a una riga con Ctrl-G.
La formattazione cambia i dati?
No. Formattare e minificare cambiano solo gli spazi. Ordinare le chiavi cambia l’ordine, che JSON non considera significativo, ma alcuni consumatori (firme, JSON canonico) sì.
Perché un numero ha perso precisione?
I numeri JavaScript sono double, quindi gli interi sopra 2⁵³ (circa 9 × 10¹⁵) vengono arrotondati all’analisi. Se formatti un documento con ID del genere, memorizzali come stringhe.