JSON: cos'è, sintassi, validazione e best practice
JSON (JavaScript Object Notation) è il formato più usato per lo scambio di dati tra applicazioni. Se lavori con API, configurazioni o dati strutturati, lo incontri quotidianamente. In questa guida vediamo sintassi, tipi, errori comuni e best practice.
Sintassi JSON: le regole base
JSON è semplice: ha due strutture principali, oggetti e array.
- Oggetto: collezione di coppie chiave-valore, racchiuse in
{ }. Le chiavi sono stringhe con doppi apici, separate dai valori da:, le coppie da,. - Array: lista ordinata di valori, racchiusa in
[ ], separati da,.
Esempio:
{"nome": "Mario", "eta": 30, "hobby": ["calcio", "musica"], "attivo": true, "indirizzo": null}
Tipi di dato supportati
- String: testo tra doppi apici (es.
"ciao") - Number: interi o decimali (es.
42,3.14) - Boolean:
trueofalse - null: assenza di valore
- Object: oggetti annidati
- Array: array di qualsiasi tipo
Notare cosa NON è supportato: commenti, apici singoli, funzioni, date (vanno serializzate come stringa ISO).
Errori JSON comuni (e come risolverli)
- Virgola finale:
{"a": 1,}non è valido. Rimuovi l'ultima virgola. - Chiavi senza virgolette:
{a: 1}non è JSON, è JavaScript. Usa{"a": 1}. - Apici singoli:
{'a': 1}non valido. Usa doppi apici. - Commenti:
// commentoo/* ... */non sono ammessi. - Trailing comma negli array:
[1, 2, 3,]non valido.
Il nostro validatore JSON ti segnala esattamente riga e posizione dell'errore, risparmiandoti minuti di debug.
Minify vs pretty-print
JSON su rete viene spedito minificato (una sola riga, senza spazi) per ridurre i byte. Per leggerlo, lo si pretty-printa aggiungendo indentazione (di solito 2 o 4 spazi). Esempio:
{"a":1,"b":[2,3]} → {
"a": 1,
"b": [2, 3]
}
Best practice
- Usa camelCase per le chiavi (convenzione JSON).
- Versiona le tue API (URL o header) per evitare breaking changes.
- Per le date usa ISO 8601 (es.
"2026-06-23T14:30:00Z"). - Mantieni le risposte API piatte quando possibile: JSON profondamente annidato è difficile da consumare.
- Valida sempre l'input JSON lato server, anche se arriva da te stesso.