Google Gson

Activité JSON avec Gson #

Nous vous invitons maintenant à faire une activité pratique avec la librairie Java Gson. L'activité vous amènera sur la plateforme GitHub et vous devrez utiliser Maven. Cette démarche ressemble à une activité industrielle.

Utilisation de Google Gson pour le traitement JSON en Java #

Google Gson est une bibliothèque Java open-source populaire développée par Google pour convertir des objets Java en JSON (sérialisation) et du JSON en objets Java (désérialisation). Pour l’inclure dans un projet Maven, ajoutez la dépendance suivante.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.13.2</version>
</dependency>

Sérialisation et désérialisation de base #

La sérialisation convertit un objet Java en chaîne JSON. La désérialisation fait l’inverse. Par défaut, Gson sérialise les champs privés, exclut les champs transient et static, et omet les valeurs null. Les champs transient en Java ne sont pas destinés à être sauvegardé.

Voici un exemple autonome.

ExempleBasique.java

L’exécution de ce code affiche un JSON compact sans le champ transient, puis reconstruit l’objet.

Mise en forme jolie et inclusion des null #

Pour une sortie lisible, utilisez la mise en forme jolie. Pour inclure les champs null, configurez le builder.

ExempleMiseEnForme.java

Cela affiche un JSON formaté, incluant le champ “pages” null.

Gestion des collections et génériques #

Gson sérialise facilement les collections, mais nécessite des informations de type pour la désérialisation des génériques en raison de l’effacement de type. Utilisez TypeToken pour cela.

ExempleCollections.java

Cela fonctionne de manière similaire pour les tableaux, sets, maps et autres collections.

Objets imbriqués #

Gson gère automatiquement les hiérarchies d’objets.

ExempleObjetsImbriques.java

Noms de champs personnalisés avec @SerializedName #

Utilisez l’annotation @SerializedName pour des noms de champs JSON différents.

ExempleSerializedName.java

Exclusion de champs avec @Expose #

Configurez Gson pour sérialiser uniquement les champs annotés avec @Expose.

ExempleExpose.java