Se hai mai creato un sito web, chiamato un'API o dato un'occhiata a un file package.json, hai già incontrato JSON. Sta per JavaScript Object Notation, ed è fondamentalmente il linguaggio universale che le app usano per comunicare tra loro. Non lasciarti ingannare dal "JavaScript" — JSON funziona con praticamente tutti i linguaggi di programmazione.

Analizziamolo in parole semplici, con tanti esempi lungo il percorso.

Una breve lezione di storia

JSON è stato creato da Douglas Crockford all'inizio degli anni 2000. Voleva qualcosa di più semplice dell'XML per inviare dati tra browser e server. L'idea ha preso piede rapidamente — JSON è stato ufficialmente standardizzato come ECMA-404 nel 2013 e successivamente come RFC 8259 nel 2017.

Oggi, oltre il 90% delle API web usa JSON. Non va da nessuna parte.

Come si presenta JSON?

Ecco un esempio semplice — un oggetto JSON che rappresenta una persona:

json

Piuttosto leggibile, vero? Questo è esattamente il punto. Vediamo le regole che lo rendono possibile.

Le regole di sintassi (sono semplici, promesso)

Tipi di dati: JSON ti dà sei elementi base con cui lavorare: stringhe (sempre tra virgolette doppie), numeri, booleani (true/false), null, oggetti e array. Questo è tutto — niente date, niente funzioni, niente tipi speciali.

Oggetti: Sono le tue coppie chiave-valore, racchiuse tra parentesi graffe {}. Le chiavi devono essere stringhe tra virgolette doppie. Ecco un esempio di oggetto annidato:

json

Array: Liste ordinate tra parentesi quadre []. Possono contenere qualsiasi combinazione di tipi:

json

Attenzione: JSON non permette le virgole finali. Quindi {"name": "Sam",} manderà in crash il tuo parser. Questo è un tranello per molte persone che vengono da JavaScript, dove le virgole finali sono perfettamente accettabili.

Perché gli sviluppatori amano JSON

Ci sono diversi motivi per cui JSON ha vinto la guerra dei formati dati:

  • È semplicissimo. Confronta {"name": "Jo"} con Jo dell'XML. Meno da scrivere, meno rumore.
  • Ogni linguaggio lo supporta. Python ha json.loads(), JavaScript ha JSON.parse(), Go ha encoding/json — hai capito il concetto. Consulta la documentazione JSON su MDN per il lato JavaScript.
  • È leggero. I payload JSON sono tipicamente il 30-50% più piccoli dell'equivalente XML. Questo conta quando invii milioni di risposte API al giorno.
  • Si mappa naturalmente al codice. Un oggetto JSON appare quasi identico a un dizionario Python, un oggetto JavaScript o un hash Ruby. Nessun livello di traduzione necessario.

Dove trovi JSON in giro

  • API web: Chiama quasi qualsiasi API REST e otterrai JSON. Provalo tu stesso — apri il browser e visita https://api.github.com/users/octocat. Quello è JSON.
  • File di configurazione: package.json per Node.js, tsconfig.json per TypeScript, settings.json per VS Code — JSON è ovunque negli strumenti di sviluppo.
  • Database: MongoDB salva i dati in BSON (JSON binario). PostgreSQL ha tipi di colonna JSON nativi. Persino MySQL ha aggiunto il supporto JSON.
  • Scambio dati: I microservizi comunicano quasi sempre tra loro in JSON via HTTP.

JSON vs XML — La versione breve

XML ha ancora il suo posto (ne parliamo di più nel nostro articolo su XML), ma per la maggior parte del lavoro di sviluppo web, JSON vince in leggibilità, dimensione file e velocità di parsing. L'unica area in cui XML brilla? Dati incentrati sui documenti con contenuto misto, schemi e trasformazioni.

Validare il tuo JSON

Anche un piccolo errore — una virgola mancante, delle virgolette in più o una virgola finale — farà fallire completamente il parsing JSON. Non esiste un "parsing parziale" con JSON; o funziona o non funziona. Per questo strumenti come il nostro JSON Formatter e JSON Validator sono così utili. Incolla il tuo JSON e vedrai subito se c'è qualcosa che non va.

Errori JSON comuni (e come risolverli)

Dopo anni di lavoro con JSON, ecco gli errori che vedo fare agli sviluppatori continuamente:

1. Virgolette singole al posto delle doppie. Questo è JavaScript valido, ma NON è JSON valido:

json

2. Virgole finali. JavaScript le permette, JSON no:

json

3. Commenti. JSON non ha una sintassi per i commenti. Se hai bisogno di commenti nei file di configurazione, considera JSONC (JSON with Comments, supportato da VS Code) o passa a YAML.

4. Chiavi senza virgolette. In JavaScript puoi scrivere {name: "Sarah"}, ma in JSON ogni chiave deve essere una stringa tra virgolette: {"name": "Sarah"}.

5. Uso di undefined. L'undefined di JavaScript non esiste in JSON. Usa null al suo posto.

Lavorare con JSON in diversi linguaggi

Uno dei punti di forza più grandi di JSON è il supporto universale dei linguaggi. Ecco come appaiono il parsing e la serializzazione nei linguaggi più popolari:

javascript
python

Noti quanto sono simili le API? parse/loads per leggere, stringify/dumps per scrivere. La maggior parte dei linguaggi segue lo stesso schema.

Consigli sulle prestazioni JSON

Quando lavori con payload JSON di grandi dimensioni, le prestazioni iniziano a contare. Ecco alcuni consigli pratici:

  • Minifica per la produzione. Rimuovere gli spazi dal JSON può ridurre la dimensione del file del 10-30%. Il nostro JSON Minifier lo fa in un clic.
  • Usa parser in streaming per file grandi. Se il tuo file JSON è di centinaia di megabyte, non caricarlo tutto in memoria. Librerie come JSONStream (Node.js) o ijson (Python) parsano in modo incrementale.
  • Evita strutture profondamente annidate. Ogni livello di annidamento aggiunge overhead al parsing. Se ti trovi ad annidare più di 4-5 livelli, considera di appiattire il tuo modello dati.
  • Considera alternative binarie per casi estremi. Per sistemi ad altissimo throughput, formati come MessagePack, BSON o Protocol Buffers possono offrire payload 2-5 volte più piccoli e parsing più veloce. Ma perdi la leggibilità umana, quindi è un compromesso.

JSON nel design di API reali

Vediamo come le API reali strutturano le loro risposte JSON. Ecco un pattern comune per risposte API paginate:

json

Ed ecco un pattern comune per le risposte di errore:

json

Questi pattern sono così comuni che li vedrai in quasi ogni API REST ben progettata. Seguire convenzioni come queste rende la tua API più facile da capire per altri sviluppatori.

Riferimento rapido JSON

Ecco un foglio riassuntivo di tutto ciò che puoi mettere in un documento JSON:

TipoEsempioNote
String"hello"Deve usare virgolette doppie
Number42, 3.14, -1, 2.5e10Niente zeri iniziali, niente esadecimale
Booleantrue, falseSolo minuscolo
NullnullSolo minuscolo
Object{"key": "value"}Le chiavi devono essere stringhe tra virgolette
Array[1, 2, 3]Può mescolare i tipi

Provalo tu stesso

Pronto a mettere in pratica queste conoscenze? Ecco gli strumenti che vorrai salvare nei preferiti:

  • JSON Formatter — Incolla JSON disordinato e ottienilo splendidamente formattato con l'indentazione corretta.
  • JSON Validator — Controlla rapidamente se il tuo JSON è sintatticamente valido e ottieni messaggi di errore chiari quando non lo è.
  • JSON Minifier — Rimuovi gli spazi dal tuo JSON per i payload di produzione.

JSON può sembrare semplice in superficie, ma padroneggiare le sue particolarità e le best practice ti farà risparmiare innumerevoli ore di debug. Ora vai a costruire qualcosa di fantastico!