back to top

Parsing JSON con Javascript: e la funzione JSON.parse()

JSON è un formato standard per lo scambio di dati tra piattaforme informatiche che nasce e si basa sul linguaggio Javascript (JSON, infatti, è l’acronimo di JavaScript Object Notation).

E’ bene precisare che, nonostante nasca da Javascript, JSON è un formato testuale completamente indipendente dal linguaggio, in quanto può essere utilizzato ed interpretato correttamente anche da altri linguaggi com, ad esempio, PHP, Java, C, Python e molti altri.

Il successo di JSON è dovuto a diversi fattori:

  • è un formato testuale semplice e leggero;
  • è totalmente indipendente dal linguaggio.

La sintassi di JSON

La sintassi di JSON ricorda moltissimo quella degli oggetti Javascript dove i dati sono rappresentati sotto forma di coppie nome-valore separate mediante il simbolo dei due punti (:) che funge da operatore di assegnazione.

nome: valore

Per renderci conto di questa somiglianza vediamo la sintassi di un semplice oggetto Javascript:

var auto = { marca: "Audi", modello: "A4", colore: "Nero" }

Tradotto in JSON avremmo avuto una tringa di questo tipo:

{ "marca": "Audi", "modello": "A4", "colore": "Nero" }

Come possiamo notare le due sintassi sono quasi identiche con la sola differenza che in JSON anche i nomi (oltre ai valori) necessitano delle virgolette. Per il resto, le somiglianze con javascript sono piuttosto evidenti:

  • la stringa JSON è delimitata da parentesi graffe esattamente come l’oggetto definito in Javascript;
  • le diverse coppie nome-valore sono separate da delle virgole;
  • nome e valore sono collegati tra loro dal simbolo due punti (:).

Array di valori con JSON

Mediante JSON è possibile rappresentare della Array. Per farlo si utilizzano le parentesi quadre in questo modo:

{ 
  "automobili": [
    { "marca": "Audi", "modello": "A4", "colore": "Nero" },
    { "marca": "FIAT", "modello": "Punto", "colore": "Bianco" },
    { "marca": "Nissan", "modello": "Micra", "colore": "Blu" }
  ]
}

Ancora una volta, esattamente come in Javascript, l’array può contenere diversi oggetti, ciascuno dei quali delimitato da paretesi graffe. Nel nostro esempio l’array "automobili" contiene tre oggetti che corrispondono a tre diverse automobili.

Interpretare JSON con Javascript

Normalmente l’utilizzo di JSON in un applicativo lato client, prevede che i dati così formattati siano il frutto di una elaborazione lato server. In pratica, l’utilizzo di JSON è frequente nelle applicazioni di tipo AJAX dove si verifica, appunto, un interscambio di dati tra uno codice Javascript ed una sorgente di dati remota.

Per comodità espositiva supponiamo, tuttavia, di aver incorporato il nostro JSON direttamente all’interno del sorgente del nostro script, includendolo come se fosse una banale stringa.

var dati = '{' +
         + '"automobili": ['
         + '{ "marca": "Audi", "modello": "A4", "colore": "Nero" },'
         + '{ "marca": "FIAT", "modello": "Punto", "colore": "Bianco" },'
         + '{ "marca": "Nissan", "modello": "Micra", "colore": "Blu" }'
         + ']'
         + '}';

Una volta incluso nello script, il nostro JSON potrà essere convertito in un oggetto Javascript mediante la funzione JSON.parse() in questo modo:

var obj = JSON.parse(dati);

La funzione JSON.parse() accetta come argomento un stringa in notazione JSON grazie alla quale generare un oggetto JavaScript.

Una volta trasformato la stringa JSON in un oggetto potremo accedere ai dati con una sintassi del genere:

alert(obj.automobili[1].marca + ' - ' + obj.automobili[1].modello);

L’output generato farà riferimento all’indice "1" perché l’indicizzazione dei record avviene come nel caso degli array, seguendo un ordinamento automatico che va da "0 a N", avremo quindi il primo record con indice "0", il secondo (quello estratto dal nostro script) associato all’indice "1" e così via.

Conclusioni

Il formato JSON risulta un validissimo sistema di scambio dati quando si ha la necessità di sviluppare applicativi che coinvolgono diversi linguaggi e tecnologie. Il suo essere indipendente dal linguaggio, infatti, lo rende un ottimo alleato nello sviluppo di sistemi ibridi in cui sia necesario uno scambio dati tra gli script lato client ed una qualche sorgente server-side.

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