efter publicering över 50 eftermontering blogginlägg Vi har samlat tillräckligt med feedback som många utvecklare skulle älska en omfattande introduktion till Googles Gson. Gson är ett mycket kraftfullt bibliotek för att kartlägga datastrukturer representerade som JSON till Java-objekt. Naturligtvis stöder det också tvärtom och kan skapa en lämplig JSON-representation av dina Java-objekt.
om du är intresserad av var den här serien går, kolla in vår serie disposition:
Gson-serien översikt
Gson Dependency
den här guiden kommer att vara praktisk och börja med lite serialisering på en minut. Eftersom många av våra läsare är Android-utvecklare skräddarsyr vi det för dig, men Gson kan användas i alla Java-miljöer. Innan vi kan komma igång måste vi dra in Gson-biblioteket till vårt projekt. I skrivande stund är den senaste versionen 2.8.5
. Om du använder Gradle lägger du till följande rad:
implementation 'com.google.code.gson:gson:2.8.5'
om du använder Maven kan du lägga till följande beroende:
<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies>
för de fattiga killarna som inte använder något beroendehanteringssystem kan du ladda ner burken på det officiella GitHub-förvaret.
grunderna i Java-JSON serialisering
så låt oss göra lite serialisering! Serialisering i samband med Gson innebär att kartlägga ett Java-objekt till dess JSON-representation. I de närmaste handledningarna kommer våra data att bli mer komplexa, men för närvarande börjar vi med ett mycket vanligt UserSimple
objekt:
public class UserSimple { String name; String email; int age; boolean isDeveloper;}
användarobjektet har fyra egenskaper:
- användarens
name
är ett Strängobjekt - användarens
email
är också ett Strängobjekt - användarens
age
är ett heltal, vilket betyder att åldern lagras i år (till exempel26
och inte den exakta födelsedagen!) - slutligen en boolesk flagga
isDeveloper
vår Android-eller Java-applikation behöver konvertera ett UserSimple
– objekt till dess JSON-representation. Förutsatt att vi håller medlemsnamnen samma, vi förväntar oss en sådan JSON för Norman, författaren till detta blogginlägg:
{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}
så låt oss se hur vi kan göra konverteringen med Gson. Först och främst måste vi skapa ett Java-objekt för Norman:
UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);
för att göra serialiseringen behöver vi ett Gson
– objekt som hanterar konverteringen. Vi kan helt enkelt använda konstruktören:
Gson gson = new Gson();
Därefter måste vi ringa funktionen toJson()
och skicka objektet UserSimple
:
String userJson = gson.toJson(userObject);
objektet userJson
innehåller följande värde:
{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}
Gson ändrade ordningen på egenskaperna (till alfabetiskt), men innehållet är identiskt! Notera hur Gson respekterade typerna. Strängvärden var inslagna i ""
, medan heltalsvärden inte hade någon omslag. Vi behövde inte röra med JSON
objekt eller kopiera enskilda medlemmar. Ett enda samtal till Gson räckte för att kartlägga hela objektet. Detta är mycket praktiskt när vi arbetar med komplexa datastrukturer. Men innan vi går för djupt, låt oss testa den andra riktningen. Kan Gson skapa ett Java-objekt från ovanstående JSON?
grunderna i JSON-Java deserialisering
först och främst måste vi skapa en sträng som innehåller ovannämnda JSON:
String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}";
vi ändrade "
till '
för att undvika att massor av \"
flyr. Ändå fungerar det på något sätt. Nästa steg är, som du antagligen har gissat, att skapa en Gson-instans:
Gson gson = new Gson();
Slutligen måste vi kartlägga från en JSON till ett Java-objekt med fromJson()
:
UserSimple userObject = gson.fromJson(userJson, UserSimple.class);
observera hur vi måste passera det förväntade Java-objektet som den andra parametern. Annars vet Gson inte vad det ska kartlägga JSON till. Det är ingen trollkarl!
om vi bifogar en debugger och kontrollerar den resulterande userObject
visar det oss att Gson framgångsrikt mappade alla egenskaper korrekt:
i det här inlägget har du sett den grundläggande användningen av Gson. Vi har visat hur lätt det är att kartlägga från och till JSON-data. Vi är säkra på att du har en massa frågor just nu:
- behöver Java – modellklasserna en konstruktör/getter / setter?
- kan Java-modellfälten vara privata?
- hur hanteras null-värden?
- vad händer om Java-klassen har annan medlemsnamn än JSON?
- hur man (de)serialiserar arrayer/listor över objekt
- hur man (de)serialiserar kapslade objekt
- behåller Gson ett definierat standardvärde för en klassegenskap när man kör
.fromJson()
och det finns inget värde för den egenskapen tillgänglig i JSON?
inga bekymmer, vi kommer till dem alla under de kommande veckorna. Om du har ett specifikt ämne i åtanke, låt oss veta i kommentarerna eller på twitter @futurestud_io.
gör det rock & njut av kodning!
inte Expert än? Hämta Vår Gson-Bok!
kartläggning JSON till Java-objekt (och vice versa) är från 90-talet. Gson är den moderna lösningen för att kartlägga mellan Java och JSON automatiskt med minimal ansträngning.
du behöver bara veta hur! Lär dig varje detalj om Gsons funktioner, konfiguration & anpassning i vår bok.
vår bok innehåller allt du behöver veta om Gson. Värdera din tid och spara dig från oändliga timmar med Google-sökningar för att snabbt lösa dina problem. Investera i din kunskap på förhand och i en ren lösning. Vi gör dig till Gson-experten i ditt team.
innehåller en arbetsbok!