JSON (JavaScript Object Notation) è un formato utilizzato per lo scambio di dati, tale notazione deve gran parte del suo successo alla semplicità di lettura e scrittura da parte degli sviluppatori e, nello stesso tempo, risulta semplice per un calcolatore generare e analizzarne la sintassi.
Un esempio di una stringa JSON valida è la seguente:
{
"firstName": "Simone",
"lastName": "D'Amico",
"birthDate": "2000-01-01",
"country": "IT"
}
Come possiamo notare, essa è molto semplice da leggere perché scritta in modo molto vicino alla sintassi degli array che già conosciamo. PHP ci mette a disposizione due funzioni per convertire una stringa JSON in un oggetto o un array e viceversa.
Convertire una stringa JSON in PHP
La funzione che abbiamo a disposizione per decodificare una stringa JSON si chiama json_decode() e prende in ingresso principalmente due parametri:
$json: la stringa JSON da decodificare;$assoc: un booleano che indica se convertire la stringa in un oggettostdClassquando il valore èfalse, oppure in un array associativo se il valore ètrue. Di default èfalse.
Supponiamo di avere la stringa proposta in precedenza all'interno di una variabile e vediamo come convertirla in un array associativo:
$jsonUser = '{"firstName":"Simone","lastName":"D\'Amico"}';
$user = json_decode($jsonUser, true);
print_r($user);
Il risultato che otteniamo è il seguente:
Array
(
[firstName] => Simone
[lastName] => D'Amico
)
Nel caso in cui una stringa sia malformata, viene restituito null, possiamo però utilizzare la funzione json_last_error_msg() per farci restituire l'errore relativo:
// la stringa contiene una virgola di troppo dopo il nome
$jsonUser = '{"firstName":"Simone",}';
$user = json_decode($jsonUser, true);
echo json_last_error_msg();
La funzione restituirà una notifica Syntax error dato che la decodifica non è andata a buon fine in quanto la stringa è malformata.
Convertire un array in JSON
Supponiamo di dover gestire il caso contrario a quello appena visto: abbiamo un array (o un qualsiasi altro tipo di dato) e vogliamo convertirlo in una stringa JSON. In questo caso abbiamo bisogno della funzione json_encode() che, dato un valore, restituirà la stringa corrispondente in JSON. Un esempio:
$user = [
'firstName' => 'Simone',
'lastName' => 'D\'Amico',
'age' => 30
];
echo json_encode($user);
Il risultato che otterremo è il seguente:
{"firstName":"Simone","lastName":"D'Amico","age":30}
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: