Convertir String a JsonObject con Gson

1. Información general

Cuando trabajamos con JSON en Java usando la biblioteca Gson, tenemos varias opciones a nuestra disposición para convertir JSON sin procesar en otras clases o estructuras de datos con las que podemos trabajar más fácilmente.

Por ejemplo, podemos convertir cadenas JSON en un mapa o crear una clase personalizada con asignaciones.

A veces, sin embargo, es útil poder convertir nuestro JSON en un objeto genérico. En este tutorial, veremos cómo Gson puede darnos un JsonObject desde un String.

2. Dependencia de Maven

En primer lugar, debemos incluir la dependencia gson en nuestro pom.xml :

 com.google.code.gson gson 2.8.5 

Podemos encontrar la última versión de gson en Maven Central.

3. Usando JsonParser

El primer enfoque que veremos para convertir una cadena JSON en un JsonObject es un proceso de dos pasos que usa la clase JsonParser .

En el primer paso, necesitamos analizar nuestro String original .

Gson nos proporciona un analizador llamado JsonParser, que analiza la cadena JSON especificada en un árbol de análisis de JsonElements :

public JsonElement parse(String json) throws JsonSyntaxException

Una vez que tengamos nuestro String analizado en un árbol JsonElement , usaremos el método getAsJsonObject () , que devolverá el resultado deseado.

Veamos cómo obtenemos nuestro 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. Usando fromJson

En nuestro segundo enfoque, veremos cómo crear una instancia de Gson y usar el método fromJson . Este método deserializa la cadena JSON especificada en un objeto de la clase especificada:

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

Veamos cómo podemos usar este método para analizar nuestra cadena JSON , pasando la clase JsonObject como segundo parámetro:

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. Conclusión

En este tutorial básico, hemos aprendido dos formas diferentes de usar la biblioteca Gson para obtener un JsonObject a partir de un String con formato JSON en Java. En consecuencia, deberíamos utilizar el que mejor se adapte a nuestras operaciones JSON intermedias.

Como de costumbre, el código fuente de estos ejemplos está disponible en GitHub.