back to top

Cos’è JSON e come funziona

In questo articolo cercheremo di spiegare, in modo semplice ma dettagliato, cos’è JSON, a cosa serve e come può essere utilizzato a livello applicativo.

Cos’è JSON

JSON (acronimo di JavaScript Object Notation) è un formato utilizzato per lo scambio dati tra applicazioni all’interno di un rapporto di tipo client-server. Il formato JSON è molto utilizzato, ad esempio, per accedere alle risposte di API remote e costituisce oggi il formato di riferimento, insieme ad XML, per lo scambio di dati a livello applicativo.

Attraverso JSON è possibile rappresentare flussi dati, anche molto complessi, organizzati all’interno di una struttura multidimensionale (esattamente come accade in un array).

JSON e Javascript

Da un punto di vista tecnico, JSON è basato sul linguaggio JavaScript – standard ECMA-262 3° edizione – ma il suo sviluppo, così come il suo ambito applicativo, è indipendente da esso.

Leggere ed interpretare uno stream di dati JSON, infatti, è un’attività che può essere svolta semplicemente non solo con Javascript, ma anche con altri linguaggi di scripting come, ad esempio, PHP (quest’ultimo dispone, tra l’altro, delle funzioni native json_encode() e json_decode() appositamente pensate per la gestione di questo formato) o Java.

La sintassi di JSON

La sintassi JSON è sostanzialmente considerata come un sottoinsieme della sintassi JavaScript. Vediamo, di seguito, le caratteristiche principali che definiscono la sintassi di JSON:

{
  "nome": "valore",
  "nome": "valore",
  ...
}
  • le parentesi graffe delimitano gli oggetti che a loro volta contengono i dati;
  • i dati sono rappresentati sotto forma di coppie nome/valore;
  • ogni nome è seguito da ‘:’ (due punti);
  • le coppie nome / valore sono separate da ‘,’ (virgola);
  • sia i nomi che i valori sono circondati da virgolette (ad eccezione dei valori numerici).

Oltre alle parentesi graffe, un file JSON può contenere parentesi quadre che servono per definire delle matrici le quali, a loro volta, conterranno una pluralità di oggetti. Vediamo un esempio:

{
  "libri": [
    {
      "titolo": "Guerra e pace",
      "autore": "Lev Tolstoj"
    },
    {
      "titolo": "Il ritratto di Dorian Gray",
      "autore": "Oscar Wilde"
    },
    {
      "titolo": "La coscienza di Zeno",
      "autore": "Italo Svevo"
    }
  ]
}

Nel nostro esempio abbiamo rappresentato, mediante JSON, una matrice composta da tre oggetti (libri), ciascuno composto da due coppie nome/valore.

Nulla vieta, ovviamente, che la struttura dei dati sia molto più complessa e ramificata, con matrici che contengono oggetti che a loro volta contengono altre matrici e così via.

Un semplice esempio di scambio dati basato su JSON

Vediamo un semplice esempio di risposta JSON all’interno di uno scambio di dati tra un client ed un server nell’ambito della gestione di un ipotetico magazzino prodotti.

Si supponga che il client interroghi il server chiedendo i dettagli del prodotto con identificativo univoco 123, attraverso la chiamata ad una URI remoto del tipo:

https://127.0.0.1/magazzino.php?prodottoID=123

ottenendo in risposta quanto segue:

{
  "prodotto": "Apple iPhone 8",
  "prezzo": "600",
  "disponibili": 2
}

I dati così ottenuti potranno essere interpretati dal client ed utilizzati in base agli scopi prefissati (ad esempio, potrebbero essere rappresentati a video all’interno di un ipotetico gestionale).

Interpretare un flusso dati JSON

Come detto, interpretare un flusso di dati in JSON è un’attività che può essere svolta con moltissimi linguaggi, non solo con Javascript. Quest’ultimo, tuttavia, presenta il grosso vantaggio di essere l’ambiente nativo di questo formato e, come tale, particolarmente adatto al suo utilizzo. Tornando al primo esempio, una nostra ipotetica applicazione Javascript potrebbe gestire il flusso di dati in questo modo:

var magazzino = {
  "prodotto": "Apple iPhone 8",
  "prezzo": "600",
  "disponibili": 2
}
document.write('In magazzino abbiamo ' + magazzino.disponibili + ' pezzi di ' + magazzino.prodotto + ' al costo di ' + magazzino.prezzo + ' Euro.');

In merito all’interazione tra JSON e Javascript si legga anche la lezione dedicata a JSON all’interno della nostra Guida a Javascript.

Con PHP l’elaborazione di una stringa JSON si presenta leggermente più complessa: sino al momento della sua decodifica, infatti, un flusso dati JSON non è altro che una stringa per l’interprete di PHP. Per trasformare una stringa JSON in un oggetto è necessario ricorrere alla funzione json_decode(), in questo modo:

$magazzino = '{ "prodotto": "Apple iPhone 8", "prezzo": "600", "disponibili": 2 }';

// converto JSON
$magazzino = json_decode($magazzino);

// Stampo a video
echo 'In magazzino abbiamo ' . $magazzino->{'disponibili'} ' pezzi di ' + $magazzino->{'prodotto'} + ' al costo di ' . $magazzino->{'prezzo'} + ' Euro.';

Conclusioni

Il formato JSON è un potentissimo strumento per lo scambio di dati tra applicativi ed ha il grosso vantaggio di essere semplice da gestire con quasi tutti i principali linguaggi di sviluppo. Il suo essere "universale" lo rende particolarmente adatto allo sviluppo di servizi remoti fruibili da una molteplicità di client senza alcun vincolo, per questi ultimi, circa il linguaggio di interfacciamento.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Infinite scroll, come programmarlo su AMP e su Web con Javascript

L'infinite scroll è una tecnica di design e navigazione...

Codice Fiscale: 5 javascript per la verifica e il calcolo

Il codice fiscale รจ un identificativo tributario univoco che...

Math.ceil() – Arrotondare per eccesso con Javascript

Il metodo ceil() dell'oggetto Math di Javascript è utilizzato...

Minificare Javascript: librerie e strumenti online per comprimere il sorgente JS

La minificazione è un processo abbastanza diffuso nell'implementazione delle...

Javascript: svuotare un campo input o una textarea con un click

Quando si fornisce agli utenti un modulo per l'inserimento...

6 video player HTML5 per il tuo sito web

Con il rilascio delle specifiche definitive per HTML5 molte...
Pubblicitร