Enregistrer les données dans un fichier JSON avec Gson

1. Vue d'ensemble

Gson est une bibliothèque Java qui nous permet de convertir des objets Java en une représentation JSON. Nous pouvons également l'utiliser dans l'autre sens, pour convertir une chaîne JSON en un objet Java équivalent.

Dans ce rapide didacticiel, nous découvrirons comment enregistrer divers types de données Java en tant que JSON dans un fichier.

2. Dépendances de Maven

Tout d'abord, nous devons ajouter la dépendance Gson dans pom.xml . Ceci est disponible dans Maven Central:

 com.google.code.gson gson 2.8.5 

3. Enregistrement des données dans un fichier JSON

Nous utiliserons la méthode toJson (Object src, Appendable writer) de la classe Gson pour convertir un type de données Java en JSON et le stocker dans un fichier. Le constructeur Gson () crée un objet Gson avec la configuration par défaut:

Gson gson = new Gson();

Maintenant, nous pouvons appeler toJson () pour convertir et stocker des objets Java.

Explorons quelques exemples avec différents types de données en Java.

3.1. Primitifs

L'enregistrement des primitives dans un fichier JSON est assez simple avec GSON:

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

Ici, filePath indique l'emplacement du fichier. La sortie du fichier contiendra simplement la valeur primitive:

123.45

3.2. Objets personnalisés

De même, nous pouvons stocker des objets au format JSON.

Tout d'abord, nous allons créer une classe User simple :

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); } }

Maintenant, nous allons stocker un objet User en tant que JSON:

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

La sortie du fichier sera:

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

Si un champ est marqué comme transitoire , il est ignoré par défaut et n'est pas inclus dans la sérialisation ou la désérialisation JSON. Par conséquent, le champ de nationalité n'est pas présent dans la sortie JSON.

Par défaut également, Gson omet les champs nuls lors de la sérialisation. Donc, si nous considérons cet exemple:

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

la sortie du fichier sera:

{"id":1}

Nous verrons comment inclure des champs nuls dans la sérialisation plus tard.

3.3. Les collections

Nous pouvons stocker une collection d'objets de la même manière:

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

Dans ce cas, la sortie du fichier sera un tableau d' objets User :

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

4. Utilisation de GsonBuilder

Afin de modifier les paramètres de configuration par défaut de Gson, nous pouvons utiliser la classe GsonBuilder .

Cette classe suit le modèle du générateur et elle est généralement utilisée en appelant d'abord diverses méthodes de configuration pour définir les options souhaitées, puis en appelant la méthode create () :

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

Ici, nous définissons la jolie option d'impression qui est définie par défaut sur false . De même, pour inclure des valeurs nulles dans la sérialisation, nous pouvons appeler serializeNulls () . Les options disponibles sont répertoriées ici.

5. Conclusion

Dans cet article rapide, nous avons compris comment sérialiser divers types de données Java dans un fichier JSON. Pour explorer divers articles sur JSON, jetez un œil à nos autres tutoriels sur ce sujet.

Comme toujours, les extraits de code sont disponibles dans ce référentiel GitHub.