Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 38 di 67
  • livello intermedio
Indice lezioni

Funzioni PHP per JSON

Scopriamo come gestire il formato d'interscambio JSON con le funzioni di PHP. Convertire una stringa JSON in PHP e un array in JSON.
Scopriamo come gestire il formato d'interscambio JSON con le funzioni di PHP. Convertire una stringa JSON in PHP e un array in JSON.
Link copiato negli appunti

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:

  1. $json: la stringa JSON da decodificare;
  2. $assoc: un booleano che indica se convertire la stringa in un oggetto stdClass quando 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}

Ti consigliamo anche