In questo articolo, Il Formato dati JSON, vediamo come è possibile rappresentare dati con un formato semplice e flessibile: JSON
Indice dei contenuti
Cos’è JSON
JSON (JavaScript Object Notation) è un formato di dati strutturati leggero e ampiamente utilizzato per lo scambio di informazioni tra applicazioni e sistemi. La sua semplicità e flessibilità lo rendono una scelta popolare per diverse attività. La facilità di scrittura e di analisi della notazione JSON ne ha fatto uno dei suoi punti di forza e ne ha diffuso l’utilizzo tra gli sviluppatori.
Differenze tra XML e JSON
Rispetto al formato di dati XML, la dimensione del documento JSON è molto inferiore: infatti JSON è privo di schemi e quindi è necessario “gestire e manovrare” elementi strutturali come spazi dei nomi e involucri. JSON si basa su un sottoinsieme del linguaggio di programmazione JavaScript, Standard ECMA-262 Terza Edizione (1999), ma è un formato indipendente dalla piattaforma e viene utilizzato in più linguaggi di programmazione tra cui Java, Python, PHP, Ruby ecc.
Qualsiasi linguaggio in grado di analizzare una stringa può gestire JSON.
Douglas Crockford ideò JSON nei primi anni 2000 per lo scambio dei dati tra client e server in una WEB Application. Questo linguaggio è direttamente utilizzabile da uno script JavaScript lato client ma anche da script PHP, ad esempio, lato server e ciò ha contribuito al suo successo
Differenze con XML Nei casi molto articolati XML risulta a volte poco comprensibile. La “vista d’insieme del documento” richiede un’accurata analisi in tutta la sua interezza per comprendere l’organizzazione dei dati. Anche JSON è un formato per lo scambio di dati, ma possiede una struttura ancora più semplice di XML, che consente di capire quasi immediatamente il significato di ciò che descrive: questa particolarità è utile specialmente quando si lavora a progetti molto grandi e, soprattutto, quando al progetto collaborano più programmatori che utilizzano linguaggi diversi, da C a Java oppure Perl o Python
Sotto possiamo vedere il confronto tra documento XML e oggetto JSON
<?xml version="1.0" encoding="ISO-8859-1"?>
<libri>
<libro>
<autore>Mark Twain</autore>
<titolo>Le avventure di Huckleberry Finn</titolo>
<prezzo>9.90</prezzo>
</libro>
<libro>
<autore>Herman Melville</autore>
<titolo>Moby Dick</titolo>
<prezzo>15.10</prezzo>
</libro>
</libri>
{
"libri": {
"libro": [
{
"autore":Mark Twain,
"titolo":Le avventure di Huckleberry Finn,
"prezzo":9.90
},
{
"autore":Herman Melville,
"titolo":Moby Dick,
"prezzo":15.10
}
]
}
}
Formato JSON
JSON è costituito da due sole strutture:
- un insieme di coppie (nome, valore);
- una lista ordinata di valori.
Oggetti letterali JSON
Un oggetto letterale può essere definito con un insieme di coppie proprietà/valori separate dalla virgola: l’intero oggetto viene racchiuso tra parentesi graffe

Rispetto a JavaScript sottolineiamo che JSON ammette solo valori semplici e atomici (stringhe, numeri, array, oggetti letterali, true, false, null) e, quindi, non può contenere funzioni
Tipi di dato JSON
Numbers: supporta solo numeri in virgola mobile a doppia precisione Non sono previsti ottale, esadecimale, NaN o infinity. Esempio: var giorni = {marzo:31}
String: Sequenza di caratteri UNICODE racchiusi tra virgolette. Ogni carattere è una stringa unitaria. Esempio: var alunno = {nome: “Mario”}
Boolean: Valori true o false Esempio: var alunno = {nome: “Mario”, promosso: true}
Array: Insieme ordinato di valori racchiusi tra parentesi quadre e separati da virgole. Indicizzazione inizio=0 oppure inizio=1 Esempio:

Object: Insieme non ordinato di valori racchiusi tra parentesi graffe. Ogni nome è seguito dai due punti e le coppie nome/valore sono separate da virgole. Esempio:

Whitespace: Inseribile per migliorare la leggibilità. Esempio: var x = ” ascissa”
null: Inizializzazione variabili Esempio: var x = null
A cosa serve JSON?
La sua semplicità e flessibilità lo rendono una scelta popolare per diverse attività, tra cui:
- Scambio di dati nella comunicazione client/server nel WEB: JSON è spesso utilizzato per formattare le richieste e le risposte tra server e client nel WEB.
- Archiviazione di dati: JSON può essere utilizzato per archiviare dati strutturati in file, come configurazioni di applicazioni o informazioni utente.
- Trasmissione di dati tra linguaggi di programmazione: JSON è un formato indipendente dal linguaggio, il che lo rende ideale per lo scambio di dati tra applicazioni scritte in linguaggi diversi.
Creare file JSON
La creazione di file JSON è relativamente semplice e può essere effettuata utilizzando un editor di testo semplice. La sintassi è chiara e intuitiva, rendendola facile da leggere e scrivere anche per i principianti.
Esistono anche diverse librerie e strumenti disponibili per i linguaggi di programmazione più diffusi che semplificano la creazione e la manipolazione di dati JSON.
Leggere file JSON
La lettura di file JSON è altrettanto semplice quanto la loro creazione. I dati JSON possono essere letti da file o stringhe utilizzando librerie o strumenti specifici per il linguaggio di programmazione utilizzato.
Una volta letti, i dati JSON possono essere facilmente manipolati e utilizzati all’interno dell’applicazione.
Manipolare dati JSON
I dati JSON possono essere manipolati in vari modi, tra cui:
- Accedere a proprietà e valori di oggetti: Utilizzando il nome della proprietà tra parentesi quadre o l’operatore punto.
- Scorrere array: Utilizzando un ciclo for o un metodo di iterazione specifico per il linguaggio di programmazione utilizzato.
- Aggiungere, modificare o eliminare proprietà e valori: Utilizzando metodi specifici per la manipolazione di oggetti e array.
La flessibilità del JSON lo rende adatto a un’ampia gamma di casi d’uso per la manipolazione di dati strutturati.
JSON e PHP
A partire da PHP 5.2, sono integrate nativamente delle funzioni per la codifica e la decodifica dello stream JSON. Queste funzioni sono json_encode() e json_decode():
- json_encode(mixed value): trasforma un valore PHP in una stringa JSON che lo rappresenta.
- json_decode(string json [, bool assoc]): effettua l’operazione contraria, trasformando una stringa JSON in un valore PHP valido.
La funzione json_encode()
Vediamo un primo esempio in cui convertiamo un array PHP in formato JSON:
<?php
// Definizione di un array PHP
$frutta = array("mela", "banana", "arancia", "kiwi");
// Conversione in formato JSON
$json_frutta = json_encode($frutta);
// Visualizzazione del risultato
echo $json_frutta;
?>
Output:
["mela","banana","arancia","kiwi"]
In questo esempio, l’array PHP viene trasformato in una stringa JSON e visualizzato a schermo con echo
. La funzione json_encode()
è utile quando si devono inviare dati in formato JSON, ad esempio nelle risposte di API REST
La funzione json_encode() con un array associativo
Vediamo ora un esempio con un array associativo:
<?php
// Definizione di un array associativo PHP
$persona = array(
"nome" => "Mario",
"cognome" => "Rossi",
"eta" => 30
);
// Conversione in formato JSON
$json_persona = json_encode($persona);
// Visualizzazione del risultato
echo $json_persona;
?>
Output:
{"nome":"Mario","cognome":"Rossi","eta":30}
In questo caso, la funzione json_encode()
converte un array associativo PHP in un oggetto JSON, dove le chiavi dell’array diventano proprietà dell’oggetto JSON
La funzione json_encode() con una classe PHP
Vediamo ora un esempio in cui definiamo una classe Atleta
, creiamo un oggetto e lo convertiamo in JSON:
<?php
class Atleta {
public $nome;
public $sport;
public $eta;
public function __construct($nome, $sport, $eta) {
$this->nome = $nome;
$this->sport = $sport;
$this->eta = $eta;
}
}
// Creazione di un'istanza della classe Atleta
$atleta = new Atleta("Luca", "Calcio", 25);
// Conversione in formato JSON
$json_atleta = json_encode($atleta);
// Visualizzazione del risultato
echo $json_atleta;
?>
Output:
{"nome":"Luca","sport":"Calcio","eta":25}
In questo esempio, un oggetto PHP della classe Atleta
viene trasformato in una stringa JSON utilizzando json_encode()
. Questa tecnica è utile quando si lavora con oggetti in PHP e si vogliono serializzare i dati per inviarli in una risposta JSON.
La funzione json_decode()
La funzione json_decode()
viene utilizzata per trasformare dati JSON in PHP e, a seconda del suo parametro, ritorna o meno un array associativo (se tale parametro viene omesso equivale a false
).
Esempio di utilizzo:
<?php
// Stringa JSON
$json_string = '{"nome":"Anna", "cognome":"Verdi", "eta":28}';
// Decodifica in un oggetto PHP
$obj = json_decode($json_string);
echo "Nome: " . $obj->nome . "\n";
echo "Cognome: " . $obj->cognome . "\n";
echo "Età: " . $obj->eta . "\n";
// Decodifica in un array associativo
$array = json_decode($json_string, true);
echo "\nArray associativo:\n";
print_r($array);
?>
Output:
Nome: Anna
Cognome: Verdi
Età: 28
Array associativo:
Array
(
[nome] => Anna
[cognome] => Verdi
[eta] => 28
)
In questo esempio, json_decode()
converte la stringa JSON in un oggetto PHP di default. Se il secondo parametro viene impostato a true
, il risultato sarà un array associativo.
Lascia un commento