Post apparentemente semplice, ma vale la pena spendere qualche riga su come progettare e realizzare un file JSON che può essere esposto da uno script PHP e interpretato da un codice JavaScript.
Indice dei contenuti
Cos’è JSON?
E’ un sistema leggero di scambio dati tra servizi e software eterogenei. La sua sintassi è molto simile a quella di JabvaScript poiché, non a caso, è il linguaggio con cui è più facile intuire si gestiscano i file JSON pubblicati ed esposti da altri servizi di backend magari con pagine PHP o Java o Python. L’acronimo sta per Javascript Object Notation. E’ il sostituto ideale di XML, quest’ultimo spesso relegato ai servizi SOAP più complessi, mentre JSON è leggero, intuitivo e decisamente più semplice da utilizzare. E’ formalmente indipendente dal linguaggio di programmazione che lo tratta. I dati sono autodescritti con i nomi dei campi.
Perché JSON
La domanda è lecita per lo studente alle prime armi. Sui banchi di scuola la prima cosa che si impara è interrogare il database con una quesry ed ad usare un linguaggio stile PHP a mostrare attraverso tabelle o simili i dati appena raccolti dalla interrogazione. Il codice PHP è ovviamente chiuso e i dati sono formattati con abbellimenti e stili grafici integrati nella pagina risultante. Questo è ottimo ma se quella query la volessi riutilizzare non solo con una pagina PHP ma anche da una app che grafica quelle informazioni con un codice o linguaggio completamente diverso? Perché allora non cercare un formato dati semplice che contenga la descrizione del dato e il dato stesso così che, se reso pubblico, tutti i vari back-end possano raggiungerlo? Le info JSON esposte possono pi essere consumate da uno script PHP, da una pagina HTML con Javascript o qualsiasi altro linguaggio di programmazione.
Tipi consentiti
Che dati possiamo catalogare?
- Numeri interi o decimali (con il punto tipo 1.23)
- Testo (tra virgolette doppie)
- Booleano (true o false)
- Un vettore semplice o associativo (con le parentesi quadre)
- Un oggetto ulteriore purché racchiuso da altre parentesi graffe
- Il valore null
Sintassi
La creazione di un file JSON non è difficile. Occorre una pianificazione di cosa mostrare in base alla base di dati o sistema aggregato di dati da cui provengono le informazioni. Le regole e la sintassi da seguire sono poche.
- Ogni dato è una coppia nome descrittivo del dato/valore del dato
- I dati sono separati da virgole
- Le parentesi graffe raggruppano oggetti, ovvero gruppi di dati
- Le parentesi quadre inglobano vettori di dati
Vediamo un primo esempio che racchiude le regolette appena descritte:
{
"nome": "Alfredo",
"cognome": "Centinaro",
"indirizzo": "via villa mosca 47b",
"datanascita": {
"giorno": 2,
"mese": 1,
"anno": 1982
},
"sesso": "M",
"celibe": false,
"altezza": 1.73,
"colori": ["verde", "rosso", "arancio"],
"titolodistudio": null
}
Se vogliamo catalogare più di un dato? Ci sono due modi. Il primo è in JSON puro, indipendente dalla struttura dati. Partiamo dal presupposto che il file deve mantenere la graffa di inizio e fine, l’idea è di dare una chiave ad ogni elemento nella forma:
{
"chiave1": { ... },
"chiave2": { ... },
"chiave3": { ... }
}
U esempio completo di questo approccio:
{
"1":{
"nome": "Alfredo",
"cognome": "Centinaro",
"indirizzo": "via villa mosca 47b",
"datanascita": {
"giorno": 2,
"mese": 1,
"anno": 1982
},
"sesso": "M",
"celibe": false,
"altezza": 1.73,
"colori": ["verde", "rosso", "arancio"],
"titolodistudio": null
},
"2":{
"nome": "Mario",
"cognome": "Rossi",
"indirizzo": "via villa mosca 47b",
"datanascita": {
"giorno": 2,
"mese": 1,
"anno": 1982
},
"sesso": "M",
"celibe": false,
"altezza": 1.73,
"colori": ["verde", "rosso", "arancio"],
"titolodistudio": null
}
}
Il secondo è quello di gestire il record multiplo come un vettore dichiarando un vettore e dentro le graffe i relativi oggetti. Questo secondo approccio è più utilizzato, perché non presuppone una chiave per ogni record.
{
"insegnanti":[
{ ... },
{ ... },
{ ... }
]
}
Un esempio completo di quest’ultima versione potrebbe quindi essere il seguente:
{
"insegnanti":[
{
"nome": "Alfredo",
"cognome": "Centinaro",
"indirizzo": "via villa mosca 47b",
"datanascita": {
"giorno": 2,
"mese": 1,
"anno": 1982
},
"sesso": "M",
"celibe": false,
"altezza": 1.73,
"colori": ["verde", "rosso", "arancio"],
"titolodistudio": null
},
{
"nome": "Mario",
"cognome": "Rossi",
"indirizzo": "via villa piave 37b",
"datanascita": {
"giorno": 2,
"mese": 5,
"anno": 1980
},
"sesso": "M",
"celibe": true,
"altezza": 1.75,
"colori": ["blu", "rosso", "nero"],
"titolodistudio": null
}]
}
Parser online
Ce ne sono diversi, uno dei più semplici https://jsoneditoronline.org/ o https://jsonformatter.org/json-parser che crea una finestra doppia affiancata in cui potete vedere codice JSON e albero risultante con tanto di debugger. Se salvate i dati su file con estensione .json, potete addirittura aprirli con un browser che ne evidenzierà in molti casi la sintassi.
Ultima modifica 23 Dicembre 2022