Gson – Mise en route de la sérialisation et de la désérialisation Java-JSON

Après avoir publié plus de 50 articles de blog Retrofit, nous avons recueilli suffisamment de commentaires pour que de nombreux développeurs aimeraient une introduction approfondie au Gson de Google. Gson est une bibliothèque très puissante pour mapper des structures de données représentées sous forme de JSON sur des objets Java. Bien sûr, il prend également en charge l’inverse et peut créer une représentation JSON appropriée de vos objets Java.

Si vous souhaitez savoir où va cette série, consultez notre aperçu de la série:

Aperçu de la série Gson

>

Dépendance Gson

Ce guide sera pratique et commencera par une sérialisation en une minute. Comme beaucoup de nos lecteurs sont des développeurs Android, nous l’adapterons pour vous, mais Gson peut être utilisé dans n’importe quel environnement Java. Avant de pouvoir commencer, nous devons intégrer la bibliothèque Gson à notre projet. Au moment de la rédaction de cet article, la dernière version est 2.8.5. Si vous utilisez Gradle, ajoutez la ligne suivante:

implementation 'com.google.code.gson:gson:2.8.5' 

Si vous utilisez Maven, vous pouvez ajouter la dépendance suivante:

<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies> 

Pour les pauvres qui n’utilisent aucun système de gestion des dépendances, vous pouvez télécharger le fichier jar sur le référentiel officiel GitHub.

Bases de la sérialisation Java-JSON

Alors faisons un peu de sérialisation! La sérialisation dans le contexte de Gson signifie mapper un objet Java à sa représentation JSON. Dans les prochains tutoriels, nos données vont devenir plus complexes, mais pour l’instant, nous allons commencer par un objet UserSimple très simple:

public class UserSimple { String name; String email; int age; boolean isDeveloper;}

L’objet utilisateur a quatre propriétés:

  • Le name de l’utilisateur est un objet Chaîne
  • Le email de l’utilisateur est également un objet Chaîne
  • Le age de l’utilisateur est un entier, ce qui signifie que l’âge est stocké en années (par exemple 26 et non l’anniversaire exact!)
  • Enfin un drapeau booléen isDeveloper

Notre application Android ou Java doit convertir un objet UserSimple en sa représentation JSON. En supposant que les noms des membres restent les mêmes, nous nous attendrions à un tel JSON pour Norman, l’auteur de cet article de blog:

{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}

Voyons donc comment nous pouvons faire la conversion avec Gson. Tout d’abord, nous devons créer un objet Java pour Norman:

UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);

Pour effectuer la sérialisation, nous avons besoin d’un objet Gson, qui gère la conversion. Nous pouvons simplement utiliser le constructeur:

Gson gson = new Gson(); 

Ensuite, nous devons appeler la fonction toJson() et passer l’objet UserSimple:

String userJson = gson.toJson(userObject); 

L’objet userJson contient la valeur suivante:

{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}

Gson a changé l’ordre des propriétés (par ordre alphabétique), mais le contenu est identique! Notez comment Gson a respecté les types. Les valeurs de chaîne étaient encapsulées dans "", tandis que les valeurs entières n’avaient pas d’encapsulation. Nous n’avions pas à jouer avec des objets JSON ou à copier des membres uniques. Un seul appel à Gson était suffisant pour mapper l’objet entier. Cela est extrêmement pratique lorsque nous travaillons avec des structures de données complexes. Mais avant d’aller trop loin, testons l’autre sens. Gson peut-il créer un objet Java à partir du JSON ci-dessus?

Bases de la désérialisation JSON-Java

Tout d’abord, nous devons créer une chaîne contenant le JSON mentionné ci-dessus:

String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}"; 

Nous avons changé le " en ' pour éviter que des tonnes de \" s’échappent. Néanmoins, cela fonctionne de toute façon. L’étape suivante consiste, comme vous l’avez probablement deviné, à créer une instance Gson:

Gson gson = new Gson(); 

Enfin, nous devons mapper d’un JSON à un objet Java avec fromJson():

UserSimple userObject = gson.fromJson(userJson, UserSimple.class); 

Notez comment nous devons passer l’objet Java attendu comme deuxième paramètre. Sinon, Gson ne sait pas à quoi il doit mapper le JSON. Ce n’est pas un magicien !

Si nous attachons un débogueur et vérifions le userObject résultant, cela nous montrera que Gson a correctement mappé toutes les propriétés:

 Objet utilisateur

Dans cet article de démarrage, vous avez vu l’utilisation de base de Gson. Nous avons montré à quel point il est facile de mapper à partir et vers des données JSON. Nous sommes sûrs que vous avez un tas de questions en ce moment:

  • Les classes de modèles Java ont-elles besoin d’un constructeur / getter / setter ?
  • Les champs du modèle Java peuvent-ils être privés ?
  • Comment les valeurs nulles sont-elles gérées?
  • Que se passe-t-il si la classe Java a un nom de membre différent de celui du JSON?
  • Comment (dé)sérialiser des tableaux /listes d’objets
  • Comment (dé)sérialiser des objets imbriqués
  • Gson conserve-t-il une valeur par défaut définie pour une propriété de classe lors de l’exécution de .fromJson() et aucune valeur pour cette propriété n’est disponible dans JSON ?

Pas de soucis, nous les rencontrerons tous dans les prochaines semaines. Si vous avez un sujet spécifique en tête, faites-le nous savoir dans les commentaires ou sur twitter @futurestud_io.

Faites-le rock & profitez du codage!

Pas Encore un Expert ? Obtenez Notre Livre Gson!

 Livre Gson

Le mappage JSON sur des objets Java (et vice versa) date des années 90. Gson est la solution moderne pour mapper automatiquement entre Java et JSON avec un minimum d’effort.

Vous avez juste besoin de savoir comment! Découvrez tous les détails sur les capacités de Gson, la personnalisation de la configuration & dans notre livre.

Notre livre contient tout ce que vous devez savoir sur Gson. Valorisez votre temps et évitez des heures interminables de recherches Google pour résoudre rapidement vos problèmes. Investissez dans vos connaissances dès le départ et dans une solution propre. Nous ferons de vous l’expert Gson de votre équipe.

Comprend un classeur!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

More: