Bruk Gson til å samarbeide med JSON i Android-appene dine

Jeg vet ... Gson, JSON - det høres ut som en dårlig tunge twister. Men hvis du har vært involvert i mobilapper som kommuniserer med en server, har du uten tvil hatt et innkjøring med JSON. Av hensyn til lesere som ikke er kjent med JavaScript Object Notation, definerer Wikipedia JSON på følgende måte:

"JSON, eller JavaScript Object Notation er en lett tekstbasert åpen standard designet for menneskelig lesbar datautveksling. Det er avledet fra JavaScript-skriptspråket for å representere enkle datastrukturer og assosiative matriser, kalt objekter. Til tross for forholdet til JavaScript, er det er språkuavhengig, med analysatorer tilgjengelig for mange språk. "

Jeg opplever at jeg konverterer objekter til JSON og tilbake regelmessig. Hvis det er et lite prosjekt, er det lett nok å overstyre to-string-metoden til en enhet og gjøre konverteringen for hånd. Imidlertid noe mer komplisert enn et par faste objekter, og du vil at et bibliotek skal håndtere konverteringene for deg.

Det er en rekke JSON-biblioteker tilgjengelig for Java og spesifikt Android. Jeg har brukt json.org-biblioteket, Jackson og Google GSON. Nylig har jeg sett noen blogginnlegg som viser den overlegne hastigheten til Jackson i forhold til Gson. Jeg innrømmer at tallene er imponerende, men flere ganger enn ikke analyserer mobilapper store JSON-dokumenter. Husk at faktum er at Gson for pengene mine er mye enklere å bruke.

Følgende opplæring går gjennom prosessen med å bygge opp en standard Java-enhet og deretter flatte den ut i JSON. Du kan følge med opplæringen nedenfor eller laste ned og importere hele prosjektet.

1. Lag et nytt Android-prosjekt i Eclipse. Målrette Android 1.6 eller nyere. Sørg for å gi nytt navn til oppstartsaktiviteten Main.java.

2. Neste trinn er å laste ned Gson jar-filen.

3. Lag en ny mappe på prosjektnivå samtale libs ( figur A ). Klipp ut og lim inn glasset du lastet ned i denne katalogen. Figur A

4. Høyreklikk prosjektets øverste mest mappe og velg EGENSKAPER | JAVA BUILD PATH og velg kategorien LIBRARIES.

5. Klikk på Legg til JAR-knappen og velg Gson-krukken vi la til i / libs-mappen ( figur B ). Klikk OK. Figur B

6. Nå skal vi ha alt vi trenger på plass for å starte Gson'ing JSON. Legg til en rediger tekstwidget i den genererte xml i mappen / res / layouts.

 main.xml 
 "1.0" encoding = "utf-8" ?> 
 "Http://schemas.android.com/apk/res/android" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "vertikal" 
 android: gravitasjon = "sentrum" 
 android: padding = "16dip" > 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: text = "GSON Eksempel" /> 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: minLines = "4" 
 android: maxLines = "4" 
 android: id = "@ + id / redigering" /> 

7. Lag en ny klasse i / src-mappen som heter MyEntity.java; dette vil være din standard Java-enhet med ett unntak. Legg merke til @ -merknadene? Slik gir Gson oss kontroll over hvordan et objekt blir serialisert. Vi inkluderer en egenskap ved å legge til @Expose-taggen, og på samme måte ekskluderer vi et felt ved ikke å kommentere det. Gson lar oss også endre det flate navnet på en eiendom ved å bruke @SerializedName-merknaden. Etter min mening er merknadsmekanismen enkel og fleksibel.

 MyEntity.java 
 pakke com.authorwjf.gsonex; 
 import com.google.gson.annotations.Expose; 
 import com.google.gson.annotations.SerializedName; 
 offentlig klasse MyEntity { 
 @Avdekke 
 privat strengnavn = null ; 
 public void setName (String name) { 
 dette .navn = navn; 
 } 
 public String getName () { 
 retur navn; 
 } 
 // ikke utsett 
 privat strengløp = null ; 
 public String getRace () { 
 returløp ; 
 } 
 public void setRace (String race) { 
 dette .race = race; 
 } 
 //endring 
 @Avdekke 
 @SerializedName ( "kjønn") 
 privat streng sex = null ; 
 public String getSex () { 
 returnere sex; 
 } 
 public void setSex (String sex) { 
 dette .sex = sex; 
 } 
 } 

8. Når vi har kommentert enheten, er alt som gjenstår å lage en forekomst av Gson-parseren og kalle en av metodene. La oss se på filen /src/Main.java. Vi gjør alt i vårt for å lage overstyring. Flertallet av koden er bare å instantisere en forekomst av vår enhet og å fylle feltene.

 Main.java 
 pakke com.authorwjf.gsonex; 
 import com.google.gson.Gson; 
 import com.google.gson.GsonBuilder; 
 import android.app.Aktivitet; 
 import android.os.Bundle; 
 import android.widget.EditText; 
 offentlig klasse Hoved utvider aktivitet { 
 / ** Ringes når aktiviteten først opprettes. * / 
 @Overstyring 
 public void onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 setContentView (R.layout. main ); 
 MyEntity-eksempel = nytt MyEntity (); 
 eksempel.setName ("Mr. Spock"); 
 example.setRace ( "Vulcan"); 
 example.setSex ( "male"); 
 Gson gson = new GsonBuilder (). ExcludeFieldsWithoutExposeAnnotation (). Create (); 
 Streng flat = gson.toJson (eksempel); 
 ((EditText) findViewById (R.id. Edit )). SetText (flat); 
 } 
 } 
Å kjøre koden i emulatoren produserer godt dannet JavaScript-objektnotasjon. Du ser at utskriften ekskluderte feltet vi ikke utsatte, og endret etiketten til vårt "kjønn" -felt til "kjønn" ( figur C ). Figur C

Hvis du bla tilbake gjennom opplæringen, vil du se at det var flere trinn involvert i å laste ned og importere Gson-bibliotekene enn faktisk koding. Jeg er en stor fan av KISS (Keep It Simple Stupid) prinsippet om programmering. Etter min erfaring gjør koding med Gson akkurat det.

Hvilke biblioteker bruker du for å håndtere JSON i Android-appene dine? Hvis du bruker en jeg ikke nevnte, eller har noen ekstra innsikt i JSON-parsing, kan du høres av i diskusjonstråden.

© Copyright 2021 | pepebotifarra.com