JSON: cos’è e come funziona questo formato

JSON: cos’è e come funziona questo formato

JSON sta per Javascript Object Notation, ovvero notazione ad oggetti in Javascript, ed è un formato strutturato per rappresentare insiemi di dati.

Faccio un esempio semplice: se dobbiamo gestire un’anagrafica utenti su un sito web, potremmo avere la necessità di esportare i singoli record di dati con blocchi di informazioni strutturate, del tipo

(nome, cognome, indirizzo, email)

Il fatto di dover trasmettere e gestire sulla rete un array di dati (e non una singola stringa o un numero) pone alcune problematiche non da poco: i dati andrebbero in teoria serializzati prima della trasmissione, poi trasmessi ed infine ricomposti a destinazione. Il formato JSON aggira in qualche modo il problema, per quanto forse in maniera poco ortodossa, e lo rende più semplice da gestire: grazie ad esso l’array è comunque una stringa, ed è rappresentato in questo modo:

{

nome: Salvatore,

cognome: Capolupo,

indirizzo: via delle vie 123,

email: [email protected]

}

Il passaggio da lista (array) di oggetti a JSON, e viceversa, è piuttosto semplice, è sempre possibile e soprattutto  è reversibile in entrambe le direzioni, e questo lo rende molto interessante per la realizzazione di web service. Peraltro, JSON è anche indipendente dal linguaggio di programmazione utilizzato, e questo lo rende adatto ad essere utilizzato nelle situazioni più complicate, ad esempio nel caso di integrazioni software e con linguaggio come C, C++, C#, Java, PHP, JavaScript, Perl, Python e così via.

Definizione JSON

JSON: JavaScript Object Notation, formato di memorizzazione e scambio dati tra linguaggi di programmazione. JSON (JavaScript Object Notation) è un formato per lo scambio dati, più semplice di altri da leggere dall’esterno e da scrivere, ed altrettanto agevole per i linguaggi di programmazione da gestire. È stato inventato da Douglas Crockford.

JSON può essere inteso sia come file (un file JSON) che come formato (il formato JSON).

Come è fatto il JSON

Un formato JSON molto elementare è una singola coppia (chiave, valore), ad esempio:

{chiave: valore}

che si racchiude dall’esterno da una parentesi graffa aperta { e chiusa }, mentre chiave e valore si separano con il simbolo : (due punti). Nella pratica, ovvero, per fare un esempio “anagrafico“:

{status: single}

il che rappresenta, pertanto, l’essere single di una persona. In genere i file JSON sono liste di coppie del genere, che quindi possono diventare:

{

status: single,

eta: 40,

capelli: biondi

}

Il valore, ovvero il secondo campo (single, 40, biondi) di un formato JSON può essere anche una lista delimitata da [ e da ]:

{

giorni_festivi: [“sabato”, “domenica”]

}

La lista in genere può essere sia uniforme (lista di sole stringhe, lista di soli numeri) che mista (stringhe e numeri assieme). Non finisce qui: JSON può essere, un po’ come succede con il markup HTML, innestato a più livelli, quindi il campo “valore” potrebbe a sua volta essere una stringa JSON:

{

nome: “Ciccio”,

cognome: “Pasticcio”,

caratteristiche: {

  capelli: “Biondi”,

  altezza: “1.80m”,

  status: “Single”

}

}

Un valore JSON può essere, pertanto, basato su tre tipi di casistiche:

  • Un insieme di coppie nome/valore: un oggetto, un record, uno struct, un dizionario, una tabella hash, un elenco di chiavi o una lista (array).
  • Un elenco di valori
  • Un altro file JSON, ricorsivamente

Tutti i linguaggi di programmazione sono in grado di leggere e scrivere in formato JSON, grazie alla sua semplicità e versatilità.

Che cos’è un oggetto JSON

Per oggetto si intende una sequenza non ordinata di nomi/valori. Un oggetto inizia con {parentesi graffa sinistra e finisce con }parentesi graffa destra. Ogni nome è seguito da :due punti e la coppia di nome/valore sono separata da ,virgola.

Esempi di formato JSON

Il file seguente rappresenta un campo “hey” con valore “guy”, un campo anumber con valore 243, un oggetto innestato composto da tre campi distinti (di cui uno è una lista, in cui peraltro non è specificata la tipizzazione: ci sono due numeri ed una stringa, al suo interno), un campo awesome con valore true, un campo bogus con valore false, uno meaning a null e così via.

Scambiare dati in JSON

Nella pratica lo scambio dati tra client e server può avvenire solo in formato testo: il formato JSON è perfetto a tale scopo, e per quello che serve possiede una potenza espressiva quasi paragonabile a quella del “cugino” XML. Grazie a JSON è possibile inviare e ricevere dati in modo semplice e snello, senza complicazioni dovute al parsing e grazie alle sue regole sintattiche, semplici ed universali.

Esempio JSON in PHP

PHP dispone delle funzioni predefinite per JSON-ificare e de-JSON-ificare le stringhe (o per meglio dire, le liste o array): queste funzioni sono:

json_encode

e

json_decode

Due esempi serviranno a chiarirne l’uso:

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo (json_encode($arr));

che in questo codifica la lista di chiave, valore $arr in un formato JSON e lo stampa. Per fare il percorso inverso:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));

Esempio JSON in Javascript

JavaScript ha una funzione integrata per convertire una stringa, scritta in formato JSON, in oggetti JavaScript nativi:

JSON.parse()

Pertanto se si ricevono dati da un server in formato JSON, si possono sfruttare e gestire come qualsiasi altro oggetto JavaScript.

Esempio:

var prova = {name: “Sal”, age: 40, city: “Rome”};
var testJSON = JSON.stringify(prova);
window.location = “test.php?json=” + myJSON;

Il codice qui sopra passa una JSON come parametro URL sfruttando la funziona predefinita  JSON.stringify().

Come aprire un file JSON nel browser

Esistono apposite estensioni per aprire un file JSON nel proprio browser, e vederlo in modo adeguatamente comprensibile e formattato.

1 voto


Informazioni sull'autore

Salvatore Capolupo

Consulente SEO, ingegnere informatico e fondatore di Trovalost.it, Pagare.online, Lipercubo.it e tanti altri. Di solito passo inosservato e non ne approfitto.