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.
Por exemplo, podemosconvert JSON strings to a Map<String, Object> oucreate a custom class with mappings.
À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.