HomeBlogChe cos'è JSON?
API Basics

Che cos'è JSON?

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.

Cos’è il formato JSON

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.

JSON: come è fatto?

Un file JSON appare come un file di testo basato su due strutture fondamentali:

  • Oggetto, un insieme di coppie chiave-valore delimitato da parentesi graffe;
  • Array, una lista ordinata di valori chiusa tra parentesi quadrate.

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

}

Quali valori ammette il formato JSON?

In termini di valori, il JSON Format supporta pochi tipi di dati fondamentali :

  • Booleani (true, false);
  • Numeri interi e decimali;
  • Stringhe racchiuse tra doppi apici;
  • Array (sequenze ordinate di valori, separati da virgole e racchiusi in parentesi quadre);
  • Oggetti (altri blocchi chiusi tra parentesi graffe annidati all’interno);
  • null, il valore speciale che indica l’assenza di dati.

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".

Il formato JSON nelle API Rest

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:

  • Nelle richieste di lettura (GET), i parametri di ricerca viaggiano solitamente nell'URL e il server risponde restituendo un payload JSON;
  • Nelle richieste di scrittura come POST, PUT o PATCH, invece, il client invia un payload JSON direttamente all'interno del corpo della richiesta per creare o aggiornare una risorsa sul server.

In entrambi i casi, il corpo (body) dei messaggi scambiati tra client e server è strutturato interamente in questo formato.

JSON: cos'è e che c'entra con le API
Condividi su