Converti String in JsonObject con Gson

1. Panoramica

Quando si lavora con JSON in Java utilizzando la libreria Gson, abbiamo diverse opzioni a nostra disposizione per convertire JSON non elaborato in altre classi o strutture di dati con cui possiamo lavorare più facilmente.

Ad esempio, possiamo convertire stringhe JSON in una mappa o creare una classe personalizzata con mappature.

A volte, tuttavia, è utile poter convertire il nostro JSON in un oggetto generico. In questo tutorial, vedremo come Gson può darci un JsonObject da una stringa.

2. Dipendenza da Maven

Prima di tutto, dobbiamo includere la dipendenza gson nel nostro pom.xml :

 com.google.code.gson gson 2.8.5 

Possiamo trovare l'ultima versione di gson su Maven Central.

3. Utilizzo di JsonParser

Il primo approccio che vedremo per convertire una stringa JSON in un JsonObject è un processo in due passaggi che utilizza la classe JsonParser .

Nel primo passaggio, dobbiamo analizzare la nostra stringa originale .

Gson ci fornisce un parser chiamato JsonParser, che analizza la stringa JSON specificata in un albero di analisi di JsonElements :

public JsonElement parse(String json) throws JsonSyntaxException

Una volta che abbiamo analizzato la nostra stringa in un albero JsonElement , useremo il metodo getAsJsonObject () , che restituirà il risultato desiderato.

Vediamo come otteniamo il nostro JsonObject finale :

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. Utilizzo di fromJson

Nel nostro secondo approccio, vedremo come creare un'istanza Gson e utilizzare il metodo fromJson . Questo metodo deserializza la stringa JSON specificata in un oggetto della classe specificata:

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

Vediamo come possiamo utilizzare questo metodo per analizzare la nostra stringa JSON , passando la classe JsonObject come secondo parametro:

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. conclusione

In questo tutorial di base, abbiamo imparato due modi diversi per utilizzare la libreria Gson per ottenere un JsonObject da una stringa in formato JSON in Java. Di conseguenza, dovremmo usare quello che si adatta meglio alle nostre operazioni JSON intermedie.

Come al solito, il codice sorgente di questi esempi è disponibile su GitHub.