Convertir String en JsonObject avec Gson

1. Vue d'ensemble

Lorsque vous travaillez avec JSON en Java à l'aide de la bibliothèque Gson, nous avons plusieurs options à notre disposition pour convertir le JSON brut en d'autres classes ou structures de données avec lesquelles nous pouvons travailler plus facilement.

Par exemple, nous pouvons convertir des chaînes JSON en une carte ou créer une classe personnalisée avec des mappages.

Parfois, cependant, il est pratique de pouvoir convertir notre JSON en un objet générique. Dans ce tutoriel, nous verrons comment Gson peut nous donner un JsonObject à partir d'un String.

2. Dépendance de Maven

Tout d'abord, nous devons inclure la dépendance gson dans notre pom.xml :

 com.google.code.gson gson 2.8.5 

Nous pouvons trouver la dernière version de gson sur Maven Central.

3. Utilisation de JsonParser

La première approche que nous verrons pour convertir une chaîne JSON en JsonObject est un processus en deux étapes qui utilise la classe JsonParser .

Dans la première étape, nous devons analyser notre chaîne d' origine .

Gson nous fournit un analyseur appelé JsonParser, qui analyse la chaîne JSON spécifiée dans un arbre d' analyse de JsonElements :

public JsonElement parse(String json) throws JsonSyntaxException

Une fois notre String analysé dans un arbre JsonElement , nous utiliserons la méthode getAsJsonObject () , qui retournera le résultat souhaité.

Voyons comment nous obtenons notre JsonObject final :

String json = "{ \"name\": \"Baeldung\", \"java\": true }"; JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject(); Assert.assertTrue(jsonObject.isJsonObject()); Assert.assertTrue(jsonObject.get("name").getAsString().equals("Baeldung")); Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);

4. Utilisation de fromJson

Dans notre deuxième approche, nous verrons comment créer une instance Gson et utiliser la méthode fromJson . Cette méthode désérialise la chaîne JSON spécifiée en un objet de la classe spécifiée:

public  T fromJson(String json, Class classOfT) throws JsonSyntaxException

Voyons comment nous pouvons utiliser cette méthode pour analyser notre chaîne JSON , en passant la classe JsonObject comme deuxième paramètre:

String json = "{ \"name\": \"Baeldung\", \"java\": true }"; JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class); Assert.assertTrue(convertedObject.isJsonObject()); Assert.assertTrue(convertedObject.get("name").getAsString().equals("Baeldung")); Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);

5. Conclusion

Dans ce didacticiel de base, nous avons appris deux façons différentes d'utiliser la bibliothèque Gson pour obtenir un JsonObject à partir d'une chaîne au format JSON en Java. Par conséquent, nous devrions utiliser celui qui correspond le mieux à nos opérations JSON intermédiaires.

Comme d'habitude, le code source de ces exemples est disponible à l'adresse over sur GitHub.