Gson-komma igång med Java-JSON serialisering & deserialisering

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 exempel 26 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:

användarobjekt

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!

Gson Book

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!

Lämna ett svar

Din e-postadress kommer inte publiceras.

More: