Qu'est-ce que JSON et pourquoi en a-t-on besoin en Java ?
JSON (JavaScript Object Notation) est un format léger d'échange de données, facile à lire pour les humains et facile à traiter par les programmes. Dans le développement Java moderne, JSON est utilisé partout : des fichiers de configuration aux requêtes API vers les services web.
Travailler avec JSON en Java comprend deux actions principales :
- Sérialisation — conversion d'un objet Java en chaîne JSON.
- Parsing (désérialisation) — conversion d'une chaîne JSON en objet Java.
Dans cette leçon, nous allons voir comment effectuer ces opérations à l'aide de deux bibliothèques populaires : Jackson et Gson. Les exemples conviennent même aux développeurs débutants.
Préparation du projet et ajout des bibliothèques
Pour commencer, nous aurons besoin d'un projet Java. Nous utiliserons Maven pour gérer les dépendances. Créez un nouveau projet Maven et ajoutez les dépendances suivantes dans le fichier pom.xml :
Ajout de Jackson
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.1</version></dependency>Ajout de Gson
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version></dependency>Les deux bibliothèques peuvent être utilisées simultanément dans un même projet. Après la mise à jour, les dépendances Maven seront téléchargées automatiquement.
Création d'une classe Java pour l'exemple
Pour la démonstration, créons une classe simple User que nous allons sérialiser et parser :
public class User { private String name; private int age; private String email;
// Un constructeur vide est obligatoire pour la désérialisation public User() {}
public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; }
// Getters et setters (obligatoires pour Jackson) public String getName() { return name; } public void setName(String name) { this.name = name; }
public int getAge() { return age; } public void setAge(int age) { this.age = age; }
public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}Important : Pour le bon fonctionnement des bibliothèques, la classe doit avoir :
- Un constructeur vide (sans arguments).
- Des getters et setters pour tous les champs (obligatoire pour Jackson, suffisant avec des getters pour Gson).
Sérialisation d'un objet Java en JSON
La sérialisation est le processus de transformation d'un objet en chaîne. Examinons les deux approches.
Exemple avec Jackson
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); User user = new User("Anna", 25, "anna@example.com");
// Sérialisation en chaîne String json = mapper.writeValueAsString(user); System.out.println(json); }}Résultat de l'exécution :
{"name":"Anna","age":25,"email":"anna@example.com"}Exemple avec Gson
import com.google.gson.Gson;
public class GsonExample { public static void main(String[] args) { Gson gson = new Gson(); User user = new User("Anna", 25, "anna@example.com");
// Sérialisation en chaîne String json = gson.toJson(user); System.out.println(json); }}Le résultat sera identique. Les deux bibliothèques accomplissent la tâche aussi bien l'une que l'autre.