Android: Parsing Json

JSON (JavaScript Object Notation) è un semplice formato per lo scambio di dati. Per le persone è facile da leggere e scrivere, mentre per le macchine risulta facile da generare e analizzarne la sintassi.

JSON è un formato di testo completamente indipendente dal linguaggio di programmazione, ma utilizza convenzioni conosciute dai programmatori di linguaggi della famiglia del C, come C, C++, C#, Java, JavaScript, Perl, Python, e molti altri. Questa caratteristica fa di JSON un linguaggio ideale per lo scambio di dati.

In questo articolo mostro come effettuare il parsing di oggetti json in Android App.

Prendiamo come esempio di Json questo codice:

{“contacts”: [

{

“name”: “james”,

“e-mail”: “info@james.it”,

“phone”: “12345”,

},

{

“name”: “caroline”,

“e-mail”: “info@caroline.it”,

“phone”: “11111”,

},

{

“name”: “homer”,

“e-mail”: “write@homer.it”,

“phone”: “12222”,

},

]}

 

Per poter effettuare il parsing di questo codice json utilizziamo quindi questa libreria org.json.

Come sappiamo dalla sintassi Json:

Come gestire oggetti e array in json
Come gestire oggetti e array in json
  • parentesi graffa { rappresenta l’inizio di un oggetto;
  • parentesi rettangolare [ l’inizio di un array.

Le classi di questo package sono:

  • JSONArray per gestire gli array in formato json;
  • JSONObject per gestire gli oggetti in formato json;
  • JSONStringer per convertire oggetti e array json in stringhe;
  • JSONTokener che analizza una stringa json in formato RFC 4627 codificandola nell’ oggetto corrispondente.

Questo articolo si sofferma sulle prime due classi.

Come si può vedere nell’immagine sottostante dobbiamo utilizzare JSONObject quando si ha a che fare con una parentesi graffa. Per una parentesi rettangolare invece JSONArray.

Come gestire oggetti e array in json
Come gestire oggetti e array in json

Vediamo quindi come effettuare il parsing del json sopra riportato:

String jsonText={"contacts": [ { "name": "james", "e-mail": "info@james.it", "phone": "12345", }, { "name": "caroline", "e-mail": "info@caroline.it", "phone": "11111", }, { "name": "homer", "e-mail": "write@homer.it", "phone": "12222", }, ]}';

JSONObject jsonText = new JSONObject(json); // carico l'oggetto iniziale json

JSONArray contacts = new JSONArray("contacts"); // ho l'array con i contatti

for(int i =0;ilt;contacts.length;i++){

JSONObject contact = contacts.optJSONObject(i);

JSONObject name = contact.getJSONObject("name"); // memorizzo in name il nome

JSONObject email = contact.getJSONObject("email"); // memorizzo in name l'email

JSONObject phone = contact.getJSONObject("phone"); //memorizzo in name il telefono

}

Nel ciclo for verranno ogni volta estratti i dati relativi ad un contatto.

Rif. http://www.json.org/json-it.html

Michele Pierri

Sviluppatore android/web/desktop, blogger, nonchè sostenitore incallito dell'universo Cloud Computing, nel tempo libero amo fare sport e praticare arti marziali.