Gson-első lépések a Java-JSON Serialization & Deserialization

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ául 26 é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:

User Object

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!

Gson könyv

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!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

More: