Home / Blog /

JSON: cos’è, a cosa serve e come si usa?

di Giuseppe Maggi

Qualsiasi tecnologia di programmazione “recente” tu abbia studiato negli ultimi anni, ti sarai probabilmente imbattuto in JSON (JavaScript Object Notation). Si tratta di un formato testuale per la strutturazione di dati che, una volta compreso, ti permetterà di padroneggiare le informazioni in qualsiasi ambito dell’Informatica di oggi. In questa guida partiremo dalle sue basi, ne capiremo la struttura, i punti di forza e le applicazioni in cui viene impiegato.

Oggetti e array

JSON permette di aggregare dati (stringhe, numeri, etc.) per creare informazioni di più alto livello, tipicamente qualcosa che nel nostro programma rappresenta un elemento del mondo reale. Supponiamo di sviluppare un software che deve essere in grado di gestire allievi iscritti ad un centro di formazione. Dovrà essere in grado di manipolare oggetti JSON di questo tipo:

{
	"nome":"Edoardo",
	"cognome":"Rossi",
	"matricola":"S123456",
	"corsi_precedenti":2,
	"laureato":true
}

Questo oggetto risponde alla domanda: quali informazioni nel nostro programma descrivono l’allievo di un corso? E’ evidente che a noi serva memorizzare di ogni studente il nome, il cognome, la matricola che la scuola gli ha assegnato, il numero di corsi già frequentati e se è in possesso di una laurea. In questo oggetto, non parliamo di uno studente generico, ma di uno specifico: questi dati rappresentano esattamente l’allievo Edoardo Rossi, matricola S123456, che ha sostenuto già 2 corsi e che è in possesso di laurea.

VUOI IMPARARE A PROGRAMMARE?

Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂

SCOPRI I CORSI | ISCRIVITI

Come creare un oggetto JSON

Per creare un oggetto JSON è sufficiente:

  • disporre una coppia di parentesi graffe, quelle che notiamo all’inizio e alla fine della struttura, il cui scopo sarà contenere l’oggetto intero;
  • inserire all’interno delle parentesi graffe una sequenza di proprietà il cui nome e valore siano separate dal simbolo di due punti. Ad esempio, “nome”:”Edoardo” significa che l’oggetto possiede la proprietà “nome” il cui valore è impostato a “Edoardo”;
  • le proprietà di un oggetto sono separate da virgole.

L’oggetto appena visto è semplice ma spesso le strutture che li caratterizzano sono più complesse: approfondiremo il discorso nel seguito.
Si noti che le proprietà possono essere di tipo diverso. Quelle incluse tra doppi apici sono stringhe ossia generiche sequenze di caratteri alfanumerici (parole, testo, codici, etc.) poi ci sono numeri (con o senza virgola) e valori booleani (vero o falso indicati rispettivamente con true e false). A proposito di quest’ultima tipologia per dire che Edoardo Rossi è laureato è sufficiente assegnare il valore logico true, vero, alla relativa proprietà.

Più oggetti JSON possono essere inseriti in una sorta di collezione che prende il nome di array. Visto che sappiamo già creare un oggetto semplice, è sufficiente dire che un array JSON è costituito da una sequenza di oggetti separati da virgole e racchiusa tra parentesi quadre.

[
   {
	"nome":"Edoardo",
	"cognome":"Rossi",
	"matricola":"S123456",
	"corsi_precedenti":2,
	"laureato":true
    },
   {
	"nome":"Silvia",
	"cognome":"Verdi",
	"matricola":"S128926",
	"corsi_precedenti":0,
	"laureato":false
   } ,
   …
   …
]

In questo caso gli oggetti sono caratterizzati tutti dalla medesima struttura, ma ciò non è obbligatorio anzi molto spesso una collezione ne raccoglie di eterogenei: questa è la base della flessibilità di JSON che ha reso famoso questo formato. Ad esempio, il seguente array sarebbe perfettamente valido:

[
  {
    "tipo_vegetale":"carota",
    "colore":"arancione"
  },
  {
     "giocatore":"Riccardo Verdi",
     "goal":22,
     "anno di nascita":1998
  },
  {
     "conto corrente":"232756248562",
     "banca":"Intesa Sanpaolo",
     "saldo": 1.743,68
  }
]

Sebbene sembri un miscuglio insignificante di oggetti, sarà il nostro programma ad interpretarlo e a dargli un valore infatti ai fini del formato JSON è importante solo che la struttura sia corretta.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE PER IMPARARE A PROGRAMMARE «

Come imparare a scrivere in JSON

Come abbiamo visto JSON richiede poche regole di sintassi, ma seppur poche, vanno rispettate correttamente. Come si può fare ad allenarsi a scrivere del JSON corretto? Un modo potrebbe essere quello di utilizzare uno dei vari parser on line esistenti. E’ sufficiente aprire il browser e puntarlo ad un indirizzo come ad esempio questo (http://json.parser.online.fr/), il mio parser on line preferito.
L’interfaccia che si apre è suddivisa in due metà: a sinistra scriverai il JSON e a destra, se avrai usato la sintassi corretta, vedrai apparire un albero che rappresenta la struttura che hai creato.

JSON 01

Nota che la porzione di destra ha una barra che se diventa rossa significa che non hai usato la sintassi corretta mentre il colore grigio indicherà un JSON ben formato.

JSON 02

JSON: da dove viene e chi lo usa.

Ora che abbiamo capito come sono strutturati oggetti ed array JSON è bene capire da dove viene questo formato e cosa abbia determinato il suo inarrestabile successo. Come detto, nell’acronimo è presente il termine Javascript e questo proprio perché JSON nasce in seno a questo linguaggio che domina da sempre il web lato client ed ormai ogni altro ambito software. Il formato utilizzato in JSON è proprio il modo in cui da sempre sono scritti oggetti e array in Javascript. La semplicità e descrittività di tale sintassi ha dato spunto per creare un formato indipendente, utilizzabile mediante apposite librerie, da ogni linguaggio di programmazione.

JSON è, come XML, un formato comprensibile sia dall’uomo sia dalla macchina. Queste due cose generalmente non coincidono infatti basti pensare che quello che noi chiamiamo “linguaggio naturale” è qualcosa che può essere interpretato solo grazie all’Intelligenza Artificiale mentre il formato binario (informazioni scritte solo con sequenze di 0 e 1) è connaturato alla macchina stessa ma piuttosto complicato per l’essere umano. Al contrario, JSON e XML hanno offerto due formati testuali che l’essere umano può leggere e scrivere comodamente e la macchina può interpretare (operazione detta tecnicamente parsing) senza grandi difficoltà. Per questo molti servizi informatici hanno adottato XML e JSON per lo scambio dati con ormai una solidissima preferenza per quest’ultimo, di gran lunga più comodo del primo.

Oltre che nei servizi web, JSON è ampiamente usato come tecnologia per il salvataggio di database su file, come ossatura dei file di configurazione e molto altro.

Facciamo un esempio. Esiste uno dei tanti servizi on line che risponde al nome di OpenWeatherMap (https://openweathermap.org) che fornisce previsioni del tempo di varie città del mondo. Oltre ad essere consultabile come sito Internet offre un servizio web interrogabile da remoto. Ad esempio, contattando l’indirizzo di prova https://samples.openweathermap.org/data/2.5/forecast?q=Roma,IT&appid=b6907d289e10d714a6e88b30761fae22 si ottengono informazioni in formato JSON sul meteo nella città di Altstadt. Se volessimo realizzare un’app Android (o qualsiasi altro programma) in grado di offrire il meteo ci basterebbe interrogare uno dei vari indirizzi disponibili ed interpretarne i risultati. Estraiamo qualche informazione a partire dal link di esempio:

{
  ...
  ...
  "city":
  {
    "id":6940463,
    "name":"Altstadt",
    "coord":
    {
      "lat":48.137,
      "lon":11.5752
    } ,
    ...
    ...
  }
  ...
  ...
}

Considerando la mole dei dati abbiamo estratto solo una piccola porzione del JSON che mostra però diversi aspetti interessanti. Prima cosa, si tratta di un oggetto. Lo capiamo dalle parentesi graffe che aprono e chiudono il testo. Inoltre l’oggetto ha una di quelle strutture più complesse cui abbiamo accennato prima. La proprietà “city” è valorizzata con un oggetto, non con semplici stringhe o numeri. Per di più possiede un’altra proprietà a sua volta, “coord”, valorizzata da un altro oggetto contenente latitudine e longitudine.
La regola è: ogni proprietà di un oggetto JSON può essere a sua volta un oggetto o un array e tale struttura può essere reiterata fino al livello di profondità che ci interessa. Interessante, vero?

Iniziare con JSON

A questo punto, sei a conoscenza di tutti i concetti basilari sul formato JSON. Che tu abbia più o meno esperienza puoi iniziare ad usarlo con qualsiasi tecnologia, pensiamo ad Android (https://devacademy.it/percorsi/android-developer/), Python (https://devacademy.it/percorsi/python-developer/), Javascript (https://devacademy.it/percorsi/javascript-developer/) solo per citare i più noti e lo vedrai protagonista anche dei moderni database NoSQL (https://devacademy.it/categoria_screencast/nosql/) efficienti e scalabili, perfetti per l’epoca del Cloud Computing.
Ricorda solo che il primo passo per utilizzare JSON è quello di conoscerne bene il formato pertanto apri il tuo browser preferito ed usa sempre un buon parser online in modo da padroneggiare correttamente ogni suo aspetto.

» VUOI SAPERNE DI PIU’? SCOPRI I NOSTRI CORSI ONLINE PER IMPARARE A PROGRAMMARE «