Formato JSON: cos’è, come è fatto e cosa c’entra con le API

Quando due applicazioni informatiche devono scambiarsi dati strutturati, hanno bisogno di un formato comune che sia leggero, semplice e comprensibile per entrambi i sistemi (e possibilmente anche per eventuali esseri umani).
Oggi, quel formato è quasi sempre JSON. Nato agli inizi del 2000 per semplificare il passaggio di dati all'interno delle applicazioni web senza appesantire la rete, è diventato lo standard per le API Rest, la gestione dei file di configurazione e l'archiviazione dei dati in diversi database.
JSON è l’acronimo di JavaScript Object Notation. È un formato testuale per la strutturazione e lo scambio di dati che risulta semplice da leggere sia per gli esseri umani che per le macchine.
JSON fu descritto agli inizi del 2000 da Douglas Crockford. Fu lo stesso Crockford, nell’aprile del 2001, a inviare il primo messaggio JSON, che era indirizzato a Chip Morningstar, suo collega alla Electric Communities.
Pur essendo basato su un sottoinsieme di JavaScript (Standard ECMA-262), JSON è un formato di testo completamente indipendente dal linguaggio di programmazione. Utilizza però delle convenzioni molto note a chiunque lavori con C e C++, Java, Perl, Python e altri linguaggi di programmazione.
JSON è diventato uno standard ECMA nel 2013 ed è stato aggiornato l’ultima volta nel 2017, con la pubblicazione dello standard ISO/IEC 21778.
Un file JSON appare come un file di testo basato su due strutture fondamentali:
All’interno del file, le chiavi (o nomi) devono essere sempre racchiuse tra doppi apici (per esempio: “nome”). I valori e le coppie chiave-valore sono separati dalla virgola. E all’interno dell’oggetto, la chiave è seguita dai due punti, che introducono il rispettivo valore.
Un file JSON può apparire per esempio così:
{
"nome": "Marco",
"eta": 30,
"studente": false,
"interessi": ["programmazione", "lettura", "viaggi"],
"indirizzo": {
"città": "Roma",
"cap": "00100"
},
"telefono": null
}
In termini di valori, il JSON Format supporta pochi tipi di dati fondamentali :
Quanto alle stringhe, possono essere di ogni tipo. L'attuale standard ECMA afferma che:
"La sintassi JSON non impone alcuna restrizione sulle stringhe utilizzate come nomi, non richiede che le stringhe dei nomi siano univoche e non assegna alcun significato all'ordinamento delle coppie nome/valore".
Poiché si tratta di un formato leggero, leggibile dalle persone (human readable text) e supportato dai principali linguaggi di programmazione, JSON è diventato il formato dati predefinito delle API Rest, ma anche dei file di configurazione e di diversi database, come MongoDB e PostgreSQL. In sostanza viene usato ovunque due programmi scambiano dati strutturati.
Nelle API Rest, in particolare, il server invia JSON nel corpo della risposta e lo etichetta con l'intestazione Content-Type: application/json.
In questo contesto, il formato viene utilizzato in modo asimmetrico a seconda dell'operazione:
In entrambi i casi, il corpo (body) dei messaggi scambiati tra client e server è strutturato interamente in questo formato.