etter publisering over 50 Ettermontering blogginnlegg vi har samlet nok tilbakemeldinger at mange utviklere ville elske en omfattende introduksjon Til Googles Gson. Gson er et veldig kraftig bibliotek for å kartlegge datastrukturer representert SOM JSON Til Java-objekter. Selvfølgelig støtter den også omvendt og kan skape en passende JSON-representasjon av Java-objekter.
hvis du er interessert i hvor denne serien går, sjekk ut vår serie disposisjon:
Oversikt Over Gson-Serien
Gson Dependency
denne veiledningen vil være praktisk og starte med litt serialisering om et minutt. Siden mange av våre lesere Er Android-utviklere, skreddersyr vi Det for deg, Men Gson kan brukes i Alle Java-miljøer. Før vi kan komme i gang, må Vi trekke Inn Gson-biblioteket til prosjektet vårt. I skrivende stund er den nyeste versjonen 2.8.5
. Hvis Du bruker Gradle, legger du til følgende linje:
implementation 'com.google.code.gson:gson:2.8.5'
Hvis Du bruker Maven, kan du legge til følgende avhengighet:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies>
for de fattige gutta som ikke bruker dependency management system, kan du laste ned krukken på det offisielle GitHub-depotet.
Grunnleggende Om Java-JSON Serialisering
så la oss gjøre litt serialisering! Serialisering i Sammenheng Med Gson betyr å kartlegge Et Java-objekt til SIN json-representasjon. I de neste opplæringene vil dataene våre bli mer komplekse, men for nå begynner vi med et veldig vanlig UserSimple
objekt:
public class UserSimple { String name; String email; int age; boolean isDeveloper;}
brukerobjektet har fire egenskaper:
- brukerens
name
er Et Strengobjekt - brukerens
email
er også Et Strengobjekt - brukerens
age
er et heltall, noe som betyr at alderen er lagret i år (for eksempel26
og ikke nøyaktig fødselsdag!) - endelig et boolsk flagg
isDeveloper
Vår Android-eller Java-applikasjon må konvertere et UserSimple
– objekt til SIN json-representasjon. Forutsatt at vi holder medlemsnavnene de samme, forventer vi en SLIK JSON For Norman, forfatteren av dette blogginnlegget:
{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}
Så la oss se hvordan vi kan gjøre konverteringen Med Gson. Først av alt må vi opprette Et Java-objekt For Norman:
UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);
for å gjøre serialiseringen trenger vi et Gson
objekt, som håndterer konverteringen. Vi kan bare bruke konstruktøren:
Gson gson = new Gson();
Deretter må vi ringe funksjonen toJson()
og passere UserSimple
– objektet:
String userJson = gson.toJson(userObject);
userJson
– objektet inneholder følgende verdi:
{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}
Gson endret rekkefølgen på egenskapene (til alfabetisk), men innholdet er identisk! Legg merke til Hvordan Gson respekterte typene. Strengverdier ble pakket inn i ""
, mens heltallsverdier ikke hadde noen innpakning. Vi trengte ikke å rote rundt med JSON
objekter eller kopiere enkeltmedlemmer. En enkelt samtale Til Gson var nok til å kartlegge hele objektet. Dette er svært nyttig når vi jobber med komplekse datastrukturer. Men før vi går for dypt, la oss teste den andre retningen. Kan Gson lage Et Java-objekt fra OVENNEVNTE JSON?
Grunnleggende OM JSON-Java Deserialisering
Først av Alt må vi lage En Streng, som inneholder OVENNEVNTE JSON:
String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}";
Vi endret "
til '
for å unngå tonn \"
å rømme. Likevel fungerer det uansett. Det neste trinnet er, som du sikkert har gjettet, å lage En gson-forekomst:
Gson gson = new Gson();
Til slutt må vi kartlegge fra ET JSON Til Et Java-objekt med fromJson()
:
UserSimple userObject = gson.fromJson(userJson, UserSimple.class);
Legg merke til hvordan vi må passere det forventede Java-objektet som den andre parameteren. Ellers Vet Gson ikke hva DET skal kartlegge JSON til. Det er ikke en tryllekunstner!
hvis vi legger til en debugger og sjekker den resulterende userObject
, viser Det oss At Gson har kartlagt alle egenskapene riktig:
i dette komme i gang innlegget har du sett grunnleggende bruk Av Gson. Vi har vist hvor enkelt DET er å kartlegge FRA OG TIL json-data. Vi er sikker på at du har en haug med spørsmål i øyeblikket:
- Trenger Java-modellklassene en konstruktør/getter / setter?
- Kan Java-modellfeltene være private?
- hvordan håndteres nullverdier?
- Hva om Java-klassen har forskjellig medlemsnavn enn JSON?
- slik (de)serialiserer matriser/lister over objekter
- slik (de)serialiserer nestede objekter
- beholder Gson en definert standardverdi for en klasseegenskap under kjøring
.fromJson()
, og det er ingen verdi for den egenskapen tilgjengelig I JSON?
Ingen bekymringer, vi kommer til dem alle i de kommende ukene. Hvis du har et bestemt emne i tankene, gi oss beskjed i kommentarene eller på twitter @futurestud_io.
Gjør det rock & nyt koding!
Ikke Ekspert Ennå? Få Vår Gson Bok!
Mapping JSON Til Java objekter (og vice versa) er fra 90-tallet. Gson er den moderne løsningen for å kartlegge Mellom Java og JSON automatisk med minimal innsats.
Du trenger bare å vite hvordan! Lær alle detaljer Om Gsons evner, konfigurasjon & tilpasning i vår bok.
vår bok inneholder alt Du trenger å vite Om Gson. Verdsetter din tid og spare deg selv fra endeløse timer Med Google-søk for å raskt løse dine problemer. Invester i kunnskapen din på forhånd og i en ren løsning. Vi gjør Deg Til gson-ekspert på teamet ditt.
Inkluderer en arbeidsbok!