Enregistrer les données dans un fichier JSON avec Gson

Enregistrer des 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 à l'inverse pour convertir une chaîne JSON en un objet Java équivalent.

Dans ce rapide didacticiel, nous allons découvrir comment enregistrer divers types de données Java au format JSON dans un fichier.

2. Dépendances Maven

Tout d'abord, nous devons ajouter la dépendance Gson danspom.xml. Ceci est disponible enMaven Central:


    com.google.code.gson
    gson
    2.8.5

3. Enregistrement des données dans un fichier JSON

Nous utiliserons la méthodetoJson(Object src, Appendable writer) de la classeGson pour convertir un type de données Java en JSON et le stocker dans un fichier. Le constructeurGson() crée un objetGson avec la configuration par défaut:

Gson gson = new Gson();

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

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

3.1. Primitives

Enregistrer 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 classeUser 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 objetUser 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étransient, 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 champnationality n'est pas présent dans la sortie JSON.

De plus, par défaut, 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 plus tard comment inclure des champs nuls dans la sérialisation.

3.3. Des 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'objetsUser:

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

4. Utilisation deGsonBuilder

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

Cette classe suit le modèle du générateur et 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éthodecreate():

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

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

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 àour other tutorials sur ce sujet.

Comme toujours, les extraits de code sont disponibles enthis GitHub repository.