julkaistuamme yli 50 Jälkiasennettua blogipostausta olemme keränneet niin paljon palautetta, että monet kehittäjät haluaisivat laajan esittelyn Googlen Gsoniin. Gson on erittäin tehokas kirjasto, jolla voi kartoittaa datarakenteita, jotka on esitetty nimellä JSON to Java objects. Tietenkin se tukee myös toisinpäin ja voi luoda sopivan JSON-esityksen Java-objekteistasi.
jos olet kiinnostunut siitä, mihin tämä sarja on menossa, katso sarjamme ääriviivat:
Gson Series Overview
Gson-riippuvuus
tämä opas on käytännönläheinen ja alkaa pienellä sarjallistamisella minuutissa. Koska monet lukijoistamme ovat Android-kehittäjiä, räätälöimme sen sinulle, mutta Gsonia voidaan käyttää missä tahansa Java-ympäristössä. Ennen kuin voimme aloittaa, meidän on otettava gson library mukaan projektiimme. Kirjoitushetkellä viimeisin versio on 2.8.5
. Jos käytät Gradea, lisää seuraava rivi:
implementation 'com.google.code.gson:gson:2.8.5'
jos käytät Mavenia, voit lisätä seuraavan riippuvuuden:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies>
köyhille, jotka eivät käytä kumpaakaan riippuvuudenhallintajärjestelmää, voit ladata purkin virallisesta GitHub-arkistosta.
Basics of Java-JSON Serialization
So let ’ s do some serialization! Sarjallistaminen gson: n yhteydessä tarkoittaa Java-objektin kartoittamista sen JSON-esitykseen. Seuraavissa tutoriaaleissa datamme muuttuu monimutkaisemmaksi, mutta toistaiseksi aloitamme hyvin pelkistetyllä UserSimple
oliolla:
public class UserSimple { String name; String email; int age; boolean isDeveloper;}
käyttäjäobjektilla on neljä ominaisuutta:
- käyttäjän
name
on Merkkijonoobjekti - käyttäjän
email
on myös Merkkijonoobjekti - käyttäjän
age
on kokonaisluku, eli ikä on tallennettu vuosiin (esimerkiksi26
eikä tarkka syntymäpäivä!) - lopulta Boolen lippu
isDeveloper
Android-tai Java-sovelluksen on muunnettava UserSimple
objekti JSON-esitykseensä. Olettaen, että pidämme jäsenten nimet samoina, odotamme tällaista Jsonia Normanille, tämän blogikirjoituksen kirjoittaja:
{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}
katsotaan, miten voimme tehdä käännytyksen Gsonin kanssa. Ensinnäkin, meidän täytyy luoda Java objekti Norman:
UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);
sarjallistamista varten tarvitaan Gson
olio, joka hoitaa muuntamisen. Voimme yksinkertaisesti käyttää constructor:
Gson gson = new Gson();
seuraavaksi on kutsuttava funktio toJson()
ja läpäistävä UserSimple
olio:
String userJson = gson.toJson(userObject);
userJson
objekti sisältää seuraavan arvon:
{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}
Gson muutti ominaisuuksien järjestystä (aakkosjärjestykseen), mutta sisältö on identtinen! Huomaa, miten Gson kunnioitti tyyppejä. Merkkijonojen arvot käärittiin ""
, kun taas kokonaislukujen arvoilla ei ollut käärettä. JSON
– objektien kanssa ei tarvinnut pelleillä tai kopioida yksittäisiä jäseniä. Yksi soitto Gsonille riitti koko kohteen kartoittamiseen. Tämä on erittäin kätevä, kun työskentelemme monimutkaisten tietorakenteiden kanssa. Mutta ennen kuin mennään liian syvälle, testataan toinen suunta. Voiko gson luoda Java-objektin yllä olevasta JSONISTA?
JSON-Jaavan Autioitumisen perusteet
Ensinnäkin on luotava merkkijono, joka sisältää edellä mainitun JSONin:
String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}";
muutimme "
: n '
: ksi välttääksemme tonnien \"
karkaamisen. Se toimii joka tapauksessa. Seuraava askel on, kuten Olet luultavasti arvata, luoda gson instance:
Gson gson = new Gson();
lopuksi, meidän on kartta JSON Java objekti fromJson()
:
UserSimple userObject = gson.fromJson(userJson, UserSimple.class);
huomaa, miten ohitamme odotetun Java-objektin toisena parametrina. Muuten Gson ei tiedä, mihin JSON on merkitty. Se ei ole taikuri!
jos kiinnitämme debuggerin ja tarkistamme tuloksena olevan userObject
, se näyttää meille, että Gson kartoitti kaikki ominaisuudet oikein:
tässä aloituspostauksessa olet nähnyt gson: n peruskäytön. Olemme osoittaneet, kuinka helppoa on kartoittaa ja JSON data. Sinulla on varmasti paljon kysyttävää.:
- tarvitsevatko Java-malliluokat konstruktorin/getterin / setterin?
- voivatko Java-mallin kentät olla yksityisiä?
- miten nollia käsitellään?
- mitä jos Java-luokalla on eri jäsennimitys kuin JSONILLA?
- Miten (de)sarjaistaa arrays/lists of objects
- Miten (de)sarjaistaa sisäkkäisiä objekteja
- pitääkö Gson määritellyn oletusarvon luokan ominaisuudelle suorittaessaan
.fromJson()
eikä kyseiselle ominaisuudelle ole arvoa Saatavilla JSONISSA?
ei hätää, niihin kaikkiin päästään lähiviikkoina. Jos sinulla on jokin tietty aihe mielessä, kerro siitä meille kommenteissa tai Twitterissä @futurestud_io.
Make it rock & enjoy coding!
Etkö ole vielä asiantuntija? Ota Gson-Kirjamme!
JSONin kartoitus Java-objekteihin (ja päinvastoin) on 90-luvulta. gson on moderni ratkaisu Javan ja JSONin väliseen kartoitukseen automaattisesti vähällä vaivalla.
pitää vain osata! Lue kaikki yksityiskohdat Gson: n ominaisuuksista, konfigurointi & räätälöinti kirjassamme.
kirjamme sisältää kaiken mitä sinun tarvitsee tietää Gsonista. Arvosta aikaa ja säästää itsesi loputon tuntia Google-hakuja nopeasti korjata ongelmia. Sijoita osaamiseen etukäteen ja puhtaaseen ratkaisuun. Teemme sinusta tiimisi gson-asiantuntijan.
Sisältää työkirjan!