Salva i dati in un file JSON con Gson

1. Panoramica

Gson è una libreria Java che ci consente di convertire gli oggetti Java in una rappresentazione JSON. Possiamo anche usarlo al contrario, per convertire una stringa JSON in un oggetto Java equivalente.

In questo rapido tutorial, scopriremo come salvare vari tipi di dati Java come JSON in un file.

2. Dipendenze di Maven

Prima di tutto, dobbiamo aggiungere la dipendenza Gson in pom.xml . Questo è disponibile in Maven Central:

 com.google.code.gson gson 2.8.5 

3. Salvataggio dei dati in un file JSON

Useremo il metodo toJson (Object src, Appendable writer) della classe Gson per convertire un tipo di dati Java in JSON e archiviarlo in un file. Il costruttore Gson () crea un oggetto Gson con la configurazione predefinita:

Gson gson = new Gson();

Ora possiamo chiamare toJson () per convertire e memorizzare oggetti Java.

Esploriamo alcuni esempi con diversi tipi di dati in Java.

3.1. Primitivi

Salvare le primitive in un file JSON è piuttosto semplice usando GSON:

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

Qui, filePath denota la posizione del file. L'output del file conterrà semplicemente il valore primitivo:

123.45

3.2. Oggetti personalizzati

Allo stesso modo, possiamo memorizzare oggetti come JSON.

Innanzitutto, creeremo una semplice classe utente :

public class User { private int id; private String name; private transient String nationality; public User(int id, String name, String nationality) { this.id = id; this.name = name; this.nationality = nationality; } public User(int id, String name) { this(id, name, null); } }

Ora memorizzeremo un oggetto utente come JSON:

User user = new User(1, "Tom Smith", "American"); gson.toJson(user, new FileWriter(filePath));

L'output del file sarà:

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

Se un campo è contrassegnato come transitorio , viene ignorato per impostazione predefinita e non è incluso nella serializzazione o deserializzazione JSON. Di conseguenza, il campo nazionalità non è presente nell'output JSON.

Inoltre, per impostazione predefinita, Gson omette i campi null durante la serializzazione. Quindi, se consideriamo questo esempio:

gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));

l'output del file sarà:

{"id":1}

Vedremo più avanti come includere campi nulli nella serializzazione.

3.3. Collezioni

Possiamo memorizzare una raccolta di oggetti in modo simile:

User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") }; gson.toJson(users, new FileWriter(filePath));

In questo caso, l'output del file sarà un array di oggetti utente :

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

4. Utilizzo di GsonBuilder

Per modificare le impostazioni di configurazione di Gson predefinite, possiamo utilizzare la classe GsonBuilder .

Questa classe segue il modello del builder ed è tipicamente usata invocando prima vari metodi di configurazione per impostare le opzioni desiderate e infine chiamando il metodo create () :

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

Qui stiamo impostando l'opzione pretty print che è impostata di default su false . Allo stesso modo, per includere valori null nella serializzazione, possiamo chiamare serializeNulls () . Le opzioni disponibili sono elencate qui.

5. conclusione

In questo rapido articolo, abbiamo capito come serializzare vari tipi di dati Java in un file JSON. Per esplorare vari articoli su JSON, dai un'occhiata ai nostri altri tutorial su questo argomento.

Come sempre, gli snippet di codice sono disponibili in questo repository GitHub.