Po zveřejnění více než 50 Dovybavení blogu jsme shromáždili dostatek zpětné vazby, že hodně vývojářů by rád rozsáhlý úvod do Google Gson. Gson je velmi výkonná Knihovna pro mapování datových struktur reprezentovaných jako JSON na objekty Java. Samozřejmě také podporuje opačně a může vytvořit vhodnou reprezentaci JSON vašich objektů Java.
pokud vás zajímá, kam tato série směřuje, podívejte se na náš přehled série:
přehled řady Gson
Gson Dependency
Tato příručka bude praktická a začne s nějakou serializací za minutu. Protože mnoho našich čtenářů jsou vývojáři Androidu, přizpůsobíme vám to, ale Gson lze použít v jakémkoli prostředí Java. Než začneme, musíme do našeho projektu zapojit knihovnu Gson. V době psaní je nejnovější verze 2.8.5
. Pokud používáte Gradle, přidejte následující řádek:
implementation 'com.google.code.gson:gson:2.8.5'
pokud používáte Maven, můžete přidat následující závislost:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies>
Pro chudé lidi pomocí ani závislost management systém, můžete si stáhnout jar na oficiálních GitHub úložiště.
základy serializace Java-JSON
takže pojďme udělat nějakou serializaci! Serializace v kontextu Gson znamená mapování objektu Java na jeho reprezentaci JSON. V příštích několika tutoriály naše data bude složitější, ale teď začneme s velmi hladké UserSimple
objektu:
public class UserSimple { String name; String email; int age; boolean isDeveloper;}
uživatel objekt má čtyři vlastnosti:
- uživatele
name
je Řetězec, objekt - uživatele
email
je také objekt String - uživatele
age
je celé číslo, což znamená, že věk je uložena v letech (například26
a není přesné. narozeniny!) - konečně booleovský příznak
isDeveloper
naše aplikace pro Android nebo Java musí převést objekt UserSimple
na jeho reprezentaci JSON. Za předpokladu, že udržíme jména členů stejná, očekávali bychom takový JSON pro Normana, autor tohoto blogu:
{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}
podívejme se, jak můžeme provést konverzi pomocí Gson. Nejprve musíme vytvořit objekt Java pro Normana:
UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);
abychom mohli provést serializaci, potřebujeme objekt Gson
, který zpracovává konverzi. Můžeme jednoduše použít konstruktor:
Gson gson = new Gson();
Next, musíme volání funkce toJson()
a volbu UserSimple
objektu:
String userJson = gson.toJson(userObject);
userJson
objekt obsahuje následující hodnotu:
{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}
Gson změnil pořadí vlastností (podle abecedy), ale obsah je totožný! Všimněte si, jak Gson respektoval typy. Hodnoty řetězců byly zabaleny do ""
, zatímco celočíselné hodnoty neměly obal. Nemuseli jsme si pohrávat s JSON
objekty nebo kopírovat jednotlivé členy. Jediné volání do Gson stačilo k zmapování celého objektu. To se velmi hodí, když pracujeme se složitými datovými strukturami. Ale než půjdeme příliš hluboko, pojďme vyzkoušet opačný směr. Může Gson vytvořit objekt Java z výše uvedeného JSON?
Základy JSON-Java Deserializace
za Prvé, musíme vytvořit Řetězec, který obsahuje výše zmíněné JSON:
String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}";
změnili Jsme "
'
, aby se zabránilo tun \"
útěk. Přesto to funguje tak jako tak. Dalším krokem je, jak jste pravděpodobně uhodli, vytvořit Gson stupně:
Gson gson = new Gson();
Konečně, jsme na mapě z JSON Java objekt s fromJson()
:
UserSimple userObject = gson.fromJson(userJson, UserSimple.class);
Všimněte si, jak jsme se projít očekává, že Java objekt jako druhý parametr. Jinak Gson neví, na co by měl zmapovat JSON. To není kouzelník!
Když jsme se připojit ladicí program a zkontrolujte výsledný userObject
to nám ukáže, že Gson úspěšně namapovány všechny vlastnosti správně:
V tomto začínáme post jste viděli základní využití Gson. Ukázali jsme, jak snadné je mapovat Z A do JSON dat. Jsme si jisti, že máte spoustu otázek v tuto chvíli:
- potřebují třídy Java modelu Konstruktor / getter/setter?
- mohou být pole Java modelu soukromá?
- jak se zpracovávají hodnoty null?
- co když má třída Java jiné pojmenování členů než JSON?
- Jak (de)serializovat pole/seznamy objektů
- Jak (de)serializaci vnořené objekty
- Gson udržet definovanou výchozí hodnota pro třídu majetku při provádění
.fromJson()
a není žádná hodnota pro tuto vlastnost je k dispozici v JSON?
žádné starosti, dostaneme se ke všem v nadcházejících týdnech. Pokud máte na mysli konkrétní téma, dejte nám vědět v komentářích nebo na Twitteru @futurestud_io.
Make it rock & užijte si kódování!
ještě nejste odborník? Získejte Naši Knihu Gson!
Mapování JSON Java objektů (a naopak) je z 90. let. Gson je moderní řešení pro mapování mezi JSON Java a automaticky, s minimálním úsilím.
stačí vědět jak! Naučte se každý detail o možnostech Gson, konfigurace & přizpůsobení v naší knize.
naše kniha obsahuje vše, co potřebujete vědět o Gson. Vážte si svého času a ušetříte se z nekonečných hodin vyhledávání Google, abyste rychle vyřešili své problémy. Investujte do svých znalostí předem a do čistého řešení. Uděláme z tebe experta na Gson ve vašem týmu.
obsahuje sešit!