JavaScript Object Notation ovvero JSON

JSON, è un formato di scambio dati che utilizza la notazione letterale fornita da JavaScript per rappresentare dati strutturati. È a tutti gli effetti un sottinsieme del linguaggio JavaScript. Ok, ma non esiste già il nostro simpaticissimo XML? Giusta osservazione, ma come vedremo JSON permette l’uso di dati che vengono interpretati direttamente come oggetti JavaScript o come array.
Quindi a differenza di XML, JSON fa uso di primitive ben supportate dai browser più comuni ce ne rendono estremamente efficiente la gestione.
Tutto ciò risulta molto comodo in Ajax, dove lo spreco di banda ed il parsing delle response sono sempre cruciali.

Ovviamente JSON è completamente indipendente dal tipo di linguaggio di programmazione utilizzato. Inoltre è ampliamente supportato dalla maggior parte dei linguaggi di programmazione grazie alla disponibilità di numerose librerie.

Tipi di dati e sintassi

I dati che si possono rappresentare in JSON sono di tipo:

object: ovvero una collezione di coppie chiave:valore separate da virgola e racchiusi all’interno di parentesi graffe. (ad es. { “cpu” : “AMD K10”, “ram” : “Kingston DDR3” } )

array: sequenza ordinata di valori separati da virgola (ad esempio “email” : [ “pincopallino@pippo.it”, “pluto@pippo.it” ] )

value: un singolo valore che può essere una stringa racchiusa tra virgolette, oppure un number, un object, un array o un boolean.

Esempio

Vediamo ora un esempio di testo in formato JSON:

{“person”: {
	“personalData”: {
		“firstName”: ”Giuseppe”,
		“lastName” : ”Pace”,
		“email”    : ”giuseppe.paceATpronetics.it”,
		“phones”   : [ “123456789”, “123456789”, “089123456”]
		“age”	     : 26
       }
}

Abbiamo un oggetto root “person” e un oggetto nodo “personalData”. Quest’ultimo a sua volta contiene (come da definizione di oggetto JSON) delle coppie chiave:valore. Notiamo che la chiave “phones” in realtà è un array, quindi una sequenza di valori.

JSON in JavaScript

Ora supponiamo di aver ricevuto dal server il testo dell’esempio precedente e supponiamo di volerlo “parsare” tramite JavaScript. Per fare questo basterà semplicemente usare la funzione JavaScript eval() come segue:

var myObject = eval(‘(‘ + myJSONtext + ‘)’);

Se ad esempio volessimo recuperare il valore del campo “email” contenuto all’interno del testo basterà usare la sintassi myObject.person.personalData.email.
Bisogna però stare attenti al fatto che eval() esegue qualsiasi codice JavaScript gli venga passato.Di conseguenza l’uso di questa funzione è indicato solamente quando sappiamo che la sorgente del messaggio è sicura. Inoltre non è detto che il messaggio JSON ricevuto sia valido.
Per questo è meglio usare un JSON parser come segue:

var myObject = JSON.parse(myJSONtext, reviver);

dove il parametro opzionale reviver è una funzione che verrà eseguita per ogni coppia chiave:valore.
Ogni valore sarà sostituito dal valore restituito dalla funzione reviver.
Il JSON parser fornito da questa libreria accetta solo testi in formati JSON, quindi niente script maliziosi!

Bene dopo aver visto cos’è JSON e come può essere usato in JavaScript non resta che chiedersi quale formato di interscambio è preferibile usare nelle nostre applicazioni.
Ovviamente dipende dal contesto e dai requisiti dell’applicazione stessa. Inoltre bisogna anche valutare quanto un certo formato piuttosto che un altro sia supportato dal linguaggio di programmazione usato.
Di conseguenza è importante la disponibilità di librerie per il ‘marshalling’ degli oggetti e ‘unmarshalling’.
A questo proposito mi piacerebbe approfondire la cosa con i membri del JUG! 🙂

Peppe Pace.

Annunci

~ di hal9k su agosto 19, 2008.

4 Risposte to “JavaScript Object Notation ovvero JSON”

  1. Utilissimo, Grazie..
    Voglio fare una domanda:
    Dovrei fare il parse di un file json in un oggetto java, qualcuno sa darmi qualche consiglio??

    Grazie…

  2. Ti ringrazio, ci ho provato ma non riesco a farle funzionre, o meglio non rieso a capire come fare..

    Qualcuno sa aiutarmi???

  3. servirebbe anche a me poter fare un parse di un file json in un oggetto java.. Novità ?

    P.s. sono di Salerno ^__^

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger hanno fatto clic su Mi Piace per questo: