Introduzione a JSON

25 marzo 2011

JSON, acronimo per JavaScript Object Notation, è divenuto nel corso degli anni un popolare formato per lo scambio dei dati in applicazioni client-server. JSON non è stato creato nel senso letterale del termine, poichè la notazione letterale degli oggetti è una delle caratteristiche già presenti nel linguaggio JavaScript. Si può dire che JSON sia stato riscoperto come formato per lo scambio dati specialmente nella programmazione in AJAX.

Origine di JSON

JSON è stato proposto come formato per lo scambio dati da Douglas Crockford, il quale ne ha anche definito le specifiche. Egli lo definisce così:

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

JSON (JavaScript Object Notation) è un formato leggero per lo scambio di dati, facile da leggere e scrivere per gli esseri umani e facile da generare e analizzare da parte delle macchine. Si basa su un sottoinsieme del linguaggio di programmazione JavaScript, definito nelle specifiche ECMA-262, 3a edizione, del dicembre 1999. JSON è un formato di testo completamente indipendente dal linguaggio ma che usa convenzioni già familiari ai programmatori dei linguaggi derivati dal C, tra cui C, C++, C#, Java, JavaScript, Perl, Python e molti altri. Queste caratteristiche rendono JSON un linguaggio ideale per lo scambio di dati.

Crockford ha inoltre definito, oltre alla sintassi ed ai tipi di dati JSON, anche il tipo di contenuto con cui JSON deve essere servito nell’RFC 4627.

Sintassi di JSON

JSON prende origine dalla sintassi degli oggetti letterali in JavaScript. Un oggetto letterale può essere definito così:

var JSON = {
  proprieta1: 'Valore',
  proprieta2: 'Valore',
  proprietaN: 'Valore'
}

Si tratta di coppie di proprietà/valori separate dalla virgola ad eccezione dell’ultima. L’intero oggetto viene racchiuso tra parentesi graffe. A differenza di questa notazione JavaScript, che può contenere anche funzioni e valori complessi, JSON ammette solo valori semplici ed atomici, tra cui:

  1. stringhe
  2. numeri
  3. array
  4. oggetti letterali
  5. true, false
  6. null

Un esempio:

{
  "home": "Html.it",
  "link": "http://www.html.it",
  "argomento": "Standard del web",
  "aree": [
    {
      "area": "CSS",
      "url": "http://css.html.it"  
    },   
    {
      "area": "Basic",
      "url": "http://basic.html.it"
    }
  ]
}

JSON inizia con una coppia di parentesi graffe che racchiudono il corpo dell’intera struttura. Seguono poi le coppie di proprietà e valori che, come in questo esempio, possono contenere i valori atomici elencati sopra. A differenza degli oggetti letterali, JSON richiede che i nomi delle proprietà e i valori stringa siano racchiusi tra doppie virgolette. Per accedere a ciascuno dei membri di un oggetto JSON utilizziamo la tradizionale notazione JavaScript:

oggetto.home; // Html.it
oggetto.link; // http://www.html.it
var aree = oggetto.aree; // Array;
for(var i = 0; i < aree.length; i += 1) {
  var oggettoArea = aree[i];
  var area = oggettoArea.area;
  var url = oggettoArea.url;
  /* 1. CSS
     2. http://css.html.it
     3. Basic
     4. http://basic.html.it */
}

JSON viene usato da JavaScript tramite AJAX. Quando la richiesta ha luogo, viene restituito l’oggetto mostrato sopra, cui possiamo accedere con la sintassi precedentemente indicata. Se si utilizza jQuery, possiamo scrivere:

$.ajax({
  url: 'json.php',
  type: 'GET',
  dataType: 'json',
  success: function(oggetto) {
  
    var sito = $(oggetto).home;
    var url = $(oggetto).link;
    var aree = $(oggetto).aree;   
    //...
  }
});

Potete vedere più esempi qui.

Servire JSON

JSON deve essere servito con il content type impostato su application/json:

<?php
header('Content-Type: application/json');
?>

Riferimenti

  1. Sito ufficiale di JSON
  2. RFC 4627
  3. AJAX e JSON: accoppiata vincente su Html.it
  4. Gestire il protocollo JSON con PHP su Html.it

Se vuoi aggiornamenti su Introduzione a JSON inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Introduzione a JSON

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy