Visualizzazione stampabile
-
[SNIPPET] Json Parsing
Ciao ragazzi :)
In giro si trova davvero poco riguardo il parsing dei Json e dato che ho avuto la necessitą di utilizzare questi metodi, ritengo opportuno condividere con voi questi frammenti di codice :)
Necessario:
Libreria Gson: https://code.google.com/p/google-gson/
Importate la libreria nel progetto di eclipse (io non uso AndroidStudio ma suppongo esista un repository su maven per Gson)
Procuratevi un Json (file sul dispositivo o tramite inputstream da Url)
Qui un esempio di Json:
Prima di iniziare il parsing č importante anche stabilire quali oggetti sono presenti all'interno del file (JsonObject o JsonArray). Esiste un comodissimo tool online che categorizza il contenuto del Json: Json Parser Online
Incollate il codice e nelle opzioni in alto a destra selezionate "Show JS Types", otterrete qualcosa di questo tipo:
https://dl.dropboxusercontent.com/u/...2010.01.47.png
Ora entra in gioco Gson. Questa libreria infatti, permette il parsing dell'intero Json, semplicemente fornendogli una classe java appositamente creata a patto che il contenuto della classe rifletta il contenuto del Json.
Un semplice esempio basato su questo file (riporto solo una parte):
MyJsonObject.java
MyJsonEntities.java
MyMentions.java
Una volta create queste classi il parsing diventa un giochetto di poche righe di codice:
e voilą! Parsing del Json eseguito correttamente :)
Va sottolineato che la gerarchia e la struttura delle classi che create deve rispecchiare quella del file Json ricevuto! (MyJsonObject > MyJsonEntities > MyMentions)
Inutile dire che il parsing non va eseguito nel thread della UI ma eventualmente in un thread separato o in un AsyncTask ;)
Esistono anche librerie che possono semplificarvi la vita, quali ION (https://github.com/koush/ion) soprattutto se per ricevere il Json avete bisogno di autenticazione (Nel repo di ION date un'occhiata all'esempio relativo a twitter)
Semplice esempio di parsing tramite Url
Buon coding :) :cool:
-
IntereFFante!
Avevo fatto la stessa cosa lato server, in C#, ma il parsing su client avevo dovuto farlo a manina...