Martedì, 07 Gennaio 2020 22:17

JSON e PHP

Scritto da

JSON è una tecnologia molto semplice che viene utilizzata prevalentemente per leggere o scrivere dati da e su un server web che poi possono essere utilizzati o graficati all'interno di un sito web standard o una app per smartphone. Vediamo di più!

A molti tra alunni più giovani sembrerà strano, ma non tutti i siti web hanno una interfaccia grafica con la classica implementazione HTML/CSS. Spesso per svariati motivi tecnologici, alcuni siti web sono dei semplici contenitori di dati a cui altri software possono accedere per utilizzare quelle informazioni per svariati scopi, magari un sito web usa quei dati per graficarli per gli utenti oppure una app usa quegli stessi dati con altra interfaccia grafica adatta allo smartphone. Questi dati sono spesso forniti o sotto forma di file XML o più spesso ancora sotto forma di stringhe JSON, un formato sostanzialmente semplice e con poche regole ma molto versatile perché può essere utilizzato in modo molto semplice, senza tener conto di particolari dettagli tecnologici o di compatibilità. JSON è l'acronimo di JavaScript Object Notation e nasce con lo scopo di inviare o ricevere dati attraverso javascript. Un semplice esempio di dato JSON valido:

{
    "nome": "Alfredo",
    "cognome": "Centinaro",
    "dataNascita": "1982-01-02",
    "provincia": "TE"
}

Come vedete non è molto difforme dal concetto di vettore associativo visto in Python o PHP, dove gli indici dei vari dati non sono le posizioni numeriche 0, 1, 2 ecc ma attributi testuali quali ad esempio nome, cognome ecc

$utente = [
'nome' => 'Alfredo',
'cognome' => 'Centinaro',
'dataNascita' => '1982-01-02',
'provincia' => 'TE'
];

Il lettore più attento comincia già a farsi una idea: i vettori associativi in PHP li abbiamo in pratica ogni qual volta facciamo una query e dal fetch preleviamo i vari valori della riga in canna. Il passaggio successivo è banale: esporre questo risultato di una query, qualsivoglia complessa, sotto forma di stringa JSON che è riutilizzabile da applicazioni client con i più disparati linguaggi e tecnologie. Per esporre questo json e reinterpretarlo ci sono due funzioni:

  • json_encode() che codifica ad esempio un array associativo
  • json_decode() che preleva una stringa JSON e ne ricrea un vettore associativo

Concentriamoci sulla funzione encode che sarà per noi faro: dal PHP inviamo dati. La seconda decodifica ma è più usata tra script PHP lato server che comunicano tra di loro. Di certo sappiamo che ogni linguaggi di programmazione ha una funzione di decodifica analoga per gestire i dati che gli sono stati inviati. La codifica è semplicissima. Riferendoci al vettore precedente, ottenuto e manipolato come preferite, può essere convertito facilmente ed esposto con una banalissima echo. Se a invocare lo script sarà un browser normale, andrà a stampare a video il vettore codificato.

$utente = [
'nome' => 'Alfredo',
'cognome' => 'Centinaro',
'dataNascita' => '1982-01-02',
'provincia' => 'TE'
];

echo json_encode($utente);

Ovviamente abbiamo trattato subito il caso più complesso ma è decisamente quello più versatile. Si può fare l'encode anche degli tipi di dato, tra cui i vettori semplici o stringhe semplici.

$fumetti=array{'Pippo', 'Pluto', 'Paperino'};
echo json_encode($fumetti);

// stampa =>[ "Pippo", "Pluto", "Paperino" ] 

Notiamo infine che senza particolari header, la nostra pagina stampa, di fatti, una stringa di testo che ha la forma del vettore json, quindi viene ritornata una pagina text/html. Se volessimo invece tornare un oggetto json, vero e proprio, ci basta posizionare in alto nello script, prima dell'echo la dicitura 

header("Content-type: application/json");

Vedremo in altri articoli come usare massicciamente JSON con Ajax e JQuery.

 

Letto 66 volte
Prof. Alfredo Centinaro

Docente di "Scienze e tecnologie informatiche", "Tecnologie e progettazione di sistemi informatici", "Sistemi e Reti" presso IIS Alessandrini-Marino (Teramo), consulente e sviluppatore web. Ha collaborato per anni come sviluppatore presso MHT - Treviso, assistente Sistemi ed elaborazione dell'informazione in UniTE Corso di laurea in Scienze del turismo culturale, tutor presso Telecom Italia Learning Services (L'Aquila)

Altro in questa categoria: « La funzione header di PHP
Joomla SEF URLs by Artio