közzététele után több mint 50 Retrofit blogbejegyzések már összegyűjtött elég visszajelzést, hogy sok a fejlesztők szeretnék egy kiterjedt bevezetés a Google Gson. Gson egy nagyon erős könyvtár leképezni adatstruktúrák képviselteti magát JSON Java objektumok. Természetesen ez is támogatja a másik irányba, és létrehozhat egy megfelelő JSON ábrázolása a Java objektumok.
ha érdekel, hogy merre tart ez a sorozat, nézze meg sorozatunk vázlatát:
Gson sorozat áttekintése
Gson-függőség
ez az útmutató gyakorlati jellegű lesz, és egy perc alatt néhány sorosítással kezdődik. Mivel sok olvasónk Android-fejlesztő, személyre szabjuk az Ön számára, de a Gson bármilyen Java környezetben használható. Mielőtt elkezdhetnénk, be kell vonnunk a GSON könyvtárat a projektünkbe. Az írás idején a legújabb verzió 2.8.5
. Ha Gradle-t használ, adja hozzá a következő sort:
implementation 'com.google.code.gson:gson:2.8.5'
ha Maven-t használ, a következő függőséget adhatja hozzá:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies>
azoknak a szegény srácoknak, akik egyik függőségkezelő rendszert sem használják, letöltheti az üveget a hivatalos GitHub adattárból.
alapjai Java-JSON Sorosítás
tehát csináljunk néhány sorosítás! A sorosítás a Gson összefüggésében azt jelenti, hogy egy Java objektumot leképezünk annak JSON ábrázolására. A következő néhány oktatóanyagban az adataink összetettebbé válnak, de most egy nagyon egyszerű UserSimple
objektummal kezdjük:
public class UserSimple { String name; String email; int age; boolean isDeveloper;}
a felhasználói objektumnak négy tulajdonsága van:
- a felhasználó
name
egy String objektum - a felhasználó
email
szintén String objektum - a felhasználó
age
egy egész szám, ami azt jelenti, hogy a kor években van tárolva (például26
és nem a pontos Születésnap!) - végül egy logikai zászló
isDeveloper
Android vagy Java alkalmazásunknak UserSimple
objektumot kell konvertálnia annak JSON ábrázolására. Feltételezve, hogy a tagok nevei ugyanazok maradnak, ilyen JSON-t várnánk Norman számára, a blogbejegyzés szerzője:
{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}
lássuk tehát, hogyan tudjuk elvégezni az átalakítást a Gson – nal. Először is létre kell hoznunk egy Java objektumot a Norman számára:
UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);
a sorosítás elvégzéséhez szükségünk van egy Gson
objektumra, amely kezeli az átalakítást. Egyszerűen használhatjuk a konstruktort:
Gson gson = new Gson();
ezután meg kell hívnunk a toJson()
függvényt, és át kell adnunk a UserSimple
objektumot:
String userJson = gson.toJson(userObject);
a userJson
objektum a következő értéket tartalmazza:
{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}
a GSON megváltoztatta a tulajdonságok sorrendjét (betűrendben), de a tartalom azonos! Vegye figyelembe, hogy a Gson hogyan tartotta tiszteletben a típusokat. A karakterlánc értékeit ""
– ba csomagoltuk, míg az egész értékeknek nem volt csomagolása. Nem kellett a JSON
objektumokkal szórakoznunk, vagy egyetlen tagot másolnunk. Egyetlen hívás a Gson-nak elegendő volt az egész objektum feltérképezéséhez. Ez rendkívül hasznos, ha összetett adatstruktúrákkal dolgozunk. De mielőtt túl mélyre mennénk, teszteljük a másik irányt. Létrehozhat-e a Gson Java objektumot a fenti JSON-ból?
a JSON-Java Deserialization alapjai
először is létre kell hoznunk egy karakterláncot, amely tartalmazza a fent említett JSON-t:
String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}";
a "
– et '
– ra változtattuk, hogy elkerüljük a \"
tonna menekülését. Mindazonáltal, mindkét irányban működik. A következő lépés, amint valószínűleg kitalálta, egy Gson példány létrehozása:
Gson gson = new Gson();
végül egy JSON-ról egy Java objektumra kell leképeznünk fromJson()
:
UserSimple userObject = gson.fromJson(userJson, UserSimple.class);
figyeljük meg, hogyan kell átadni a várt Java objektum, mint a második paraméter. Ellenkező esetben a Gson nem tudja, mire kell leképeznie a JSON-t. Ez nem varázsló!
ha csatolunk egy hibakeresőt, és ellenőrizzük az eredményül kapott userObject
értéket, az megmutatja, hogy a Gson sikeresen leképezte az összes tulajdonságot:
ebben az első lépések utáni láttad az alapvető használata Gson. Megmutattuk, milyen könnyű leképezni a JSON adatokat. Biztosak vagyunk benne, hogy jelenleg egy csomó kérdése van:
- szüksége van-e a Java modellosztályoknak konstruktorra/getterre/szetterre?
- lehet A Java modell mezők privát?
- hogyan kezelik a null értékeket?
- mi van, ha a Java osztálynak más tagneve van, mint a JSON-nak?
- hogyan lehet (de)sorosítani a tömböket/objektumlistákat
- hogyan lehet (de)sorosítani a beágyazott objektumokat
- a Gson a
.fromJson()
végrehajtása közben megad egy meghatározott alapértelmezett értéket egy osztálytulajdonsághoz, és az adott tulajdonságnak nincs elérhető értéke a JSON-ban?
semmi gond, a következő hetekben mindegyikhez eljutunk. Ha egy adott témát szem előtt tart, tudassa velünk a megjegyzésekben vagy a Twitteren @futurestud_io.
legyen rock & élvezze a kódolást!
még nem szakértő? Szerezd Meg A Gson Könyvünket!
a JSON leképezése Java objektumokra (és fordítva) a 90-es évekből származik. a Gson a modern megoldás a Java és a JSON közötti automatikus leképezésre minimális erőfeszítéssel.
csak tudnia kell, hogyan! Tudjon meg minden részletet a Gson képességeiről, konfigurációjáról & Testreszabás könyvünkben.
könyvünk mindent tartalmaz, amit tudnia kell a Gson-ról. Értékelje az idejét, és mentse magát a végtelen órányi Google-kereséstől, hogy gyorsan megoldja a problémákat. Fektessen be tudásába előre és egy tiszta megoldásba. Te leszel a GSON szakértő a csapatodban.
tartalmaz egy munkafüzetet!