Sla gegevens op in een JSON-bestand met Gson

1. Overzicht

Gson is een Java-bibliotheek waarmee we Java-objecten kunnen converteren naar een JSON-weergave. We kunnen het ook andersom gebruiken om een ​​JSON-string naar een gelijkwaardig Java-object te converteren.

In deze korte zelfstudie ontdekken we hoe u verschillende Java-gegevenstypen als JSON in een bestand kunt opslaan.

2. Maven afhankelijkheden

Allereerst moeten we de Gson-afhankelijkheid toevoegen aan pom.xml. Dit is beschikbaar in Maven Central:

 com.google.code.gson gson 2.8.5 

3. Gegevens opslaan in een JSON-bestand

We gebruiken de toJson (Object src, appendable schrijver) methode van de Gson class om een ​​Java-gegevenstype naar JSON te converteren en op te slaan in een bestand. De Gson constructor maakt een Gson object met standaardconfiguratie:

Gson gson = nieuwe Gson ();

Nu kunnen we bellen naar Json() om Java-objecten te converteren en op te slaan.

Laten we enkele voorbeelden bekijken met verschillende gegevenstypen in Java.

3.1. Primitieven

Het opslaan van primitieven in een JSON-bestand is vrij eenvoudig met GSON:

gson.toJson (123.45, nieuwe FileWriter (filePath));

Hier, bestandspad geeft de locatie van het bestand aan. De bestandsuitvoer bevat simpelweg de primitieve waarde:

123.45

3.2. Aangepaste objecten

Evenzo kunnen we objecten opslaan als JSON.

Eerst maken we een simple Gebruiker klasse:

openbare klasse Gebruiker {privé int id; private String naam; privé voorbijgaande String nationaliteit; openbare gebruiker (int id, stringnaam, string nationaliteit) {this.id = id; this.name = naam; this.nationality = nationaliteit; } openbare gebruiker (int id, stringnaam) {this (id, naam, null); }}

Nu gaan we een Gebruiker object als een JSON:

Gebruiker gebruiker = nieuwe gebruiker (1, "Tom Smith", "Amerikaan"); gson.toJson (gebruiker, nieuwe FileWriter (filePath));

De bestandsuitvoer zal zijn:

{"id": 1, "name": "Tom"}

Als een veld is gemarkeerd voorbijgaand, wordt het standaard genegeerd en niet opgenomen in de JSON-serialisering of deserialisatie. Als gevolg hiervan is het nationaliteit veld is niet aanwezig in de JSON-uitvoer.

Ook laat Gson standaard null-velden weg tijdens serialisering. Dus als we dit voorbeeld beschouwen:

gson.toJson (nieuwe gebruiker (1, null, "Unknown"), nieuwe FileWriter (filePath));

de bestandsuitvoer zal zijn:

{"id": 1}

We zullen later zien hoe u null-velden in de serialisatie kunt opnemen.

3.3. Collecties

We kunnen een verzameling objecten op een vergelijkbare manier opslaan:

Gebruiker [] gebruikers = nieuwe gebruiker [] {nieuwe gebruiker (1, "Mike"), nieuwe gebruiker (2, "Tom")}; gson.toJson (gebruikers, nieuwe FileWriter (filePath));

In dit geval is de bestandsuitvoer een array van Gebruiker voorwerpen:

[{"id": 1, "name": "Mike"}, {"id": 2, "name": "Tom"}]

4. Met behulp van GsonBuilder

Om de standaard Gson-configuratie-instellingen aan te passen, kunnen we de GsonBuilder klasse.

Deze klasse volgt het builderpatroon en wordt doorgaans gebruikt door eerst verschillende configuratiemethoden aan te roepen om de gewenste opties in te stellen, en tenslotte de maken () methode:

Gson gson = nieuwe GsonBuilder () .setPrettyPrinting () .create ();

Hier stellen we de mooie afdrukoptie in die standaard is ingesteld op false. Evenzo kunnen we bellen om null-waarden in de serialisatie op te nemen serializeNulls (). De beschikbare opties worden hier vermeld.

5. Conclusie

In dit korte artikel hebben we inzicht gekregen in hoe verschillende Java-gegevenstypen in een JSON-bestand kunnen worden geserialiseerd. Bekijk onze andere tutorials over dit onderwerp om verschillende artikelen over JSON te verkennen.

Zoals altijd zijn de codefragmenten beschikbaar in deze GitHub-repository.