Conversão String para JsonObject com Gson

Conversão String para JsonObject com Gson

1. Visão geral

Ao trabalhar com JSON em Java usando a biblioteca Gson, temos várias opções à nossa disposição para converter JSON bruto em outras classes ou estruturas de dados com as quais podemos trabalhar com mais facilidade.

Às vezes, no entanto, é útil ser capaz de converter nosso JSON em um objeto genérico. In this tutorial, we’ll see how Gson can give us aJsonObjectfrom aString.

2. Dependência do Maven

Em primeiro lugar, precisamos incluir agson dependência em nossopom.xml:


    com.google.code.gson
    gson
    2.8.5

Podemos encontrar a versão mais recente degson emMaven Central.

3. UsandoJsonParser

A primeira abordagem que veremos para converter um JSONString emJsonObject é um processo de duas etapas que usa a classeJsonParser.

Na primeira etapa, precisamos analisar nossoString original.

Gson nos fornece um analisador chamadoJsonParser, que analisa o JSONString especificado em uma árvore de análise deJsonElements:

public JsonElement parse(String json) throws JsonSyntaxException

Assim que tivermos nossoString analisado em uma árvoreJsonElement, usaremos o método getAsJsonObject(), que retornará o resultado desejado.

Vamos ver como obtemos nossoJsonObject final:

String json = "{ \"name\": \"example\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();

Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("example"));
Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);

4. UsandofromJson

Em nossa segunda abordagem, veremos como criar uma instânciaGsone usar o métodofromJson. Este método desserializa o JSONString especificado em um objeto da classe especificada:

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

Vamos ver como podemos usar este método para analisar nosso JSONString, passando a classeJsonObject como o segundo parâmetro:

String json = "{ \"name\": \"example\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);

Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("example"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);

5. Conclusão

Neste tutorial básico, aprendemos duas maneiras diferentes de usar a biblioteca Gson para obter umJsonObject de umString formatado em JSON em Java. Conseqüentemente, devemos usar o que melhor se ajusta às nossas operações JSON intermediárias.

Como de costume, o código-fonte para esses exemplos está disponívelover on GitHub.