Conversione e utilizzo di stringhe JSON in PHP
Guida in italiano
Mettiamo di avere la seguente stringa JSON in una variabile $StringaJSON:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Bene, prima di tutto dobbiamo procedere a convertirla in un Array e poi visualizzare l’array a schermo:
// Convertiamo il nostro file JSON in un Array $Array_StringaJSON = json_decode($StringaJSON, true); // Vediamo il risultato dell'array print_r($Array_StringaJSON);
A questo punto ricaricando la pagina dovremmo vedere l’array stampato a schermo, anche se visualizzato in modo lineare e non strutturato. Per vederlo in modo strutturato dunque dobbiamo (nel caso di Firefox ma dovrebbe essere simile per tutti i browser) cliccare con il tasto destro sulla pagina e cliccare poi sulla voce visualizza sorgente pagina. Vi apparirà questa struttura:
Array
(
[glossary] => Array
(
[title] => example glossary
[GlossDiv] => Array
(
[title] => S
[GlossList] => Array
(
[GlossEntry] => Array
(
[ID] => SGML
[SortAs] => SGML
[GlossTerm] => Standard Generalized Markup Language
[Acronym] => SGML
[Abbrev] => ISO 8879:1986
[GlossDef] => Array
(
[para] => A meta-markup language, used to create markup languages such as DocBook.
[GlossSeeAlso] => Array
(
[0] => GML
[1] => XML
)
)
[GlossSee] => markup
)
)
)
)
)
A questo punto abbiamo una visuale facile per accedere alle informazioni, visto che non dovremmo fare altro che chiamare le varie voci dell’array partendo da sinistra. Ecco degli esempi:
echo $Array_StringaJSON["glossary"]["title"]; // Ritornerà la stringa: example glossary echo $Array_StringaJSON["glossary"]["GlossDiv"]["title"]; // Ritornerà la stringa: S echo $Array_StringaJSON["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["Acronym"] // Ritornerà la stringa: SGML
Dunque riassumento il codice è il seguente:
// Il nostro file JSON
$StringaJSON = '{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}';
// Convertiamo il nostro file JSON in un Array
$Array_StringaJSON = json_decode($StringaJSON, true);
// Vediamo il risultato dell'array
print_r($Array_StringaJSON); // Ovviamente potete rimuovere questa linea quando non dovrete più guardare la struttura dell'array
echo $Array_StringaJSON["glossary"]["title"]; // Ritornerà la stringa: example glossary
echo $Array_StringaJSON["glossary"]["GlossDiv"]["title"]; // Ritornerà la stringa S
echo $Array_StringaJSON["glossary"]["GlossDiv"]["GlossList"]["GlossEntry"]["Acronym"] // Ritornerà la stringa: SGML
Link alla discussione ufficiale di questo articolo sul forum.
