Конвертирайте String в JsonObject с Gson

1. Общ преглед

Когато работим с JSON в Java, използвайки библиотеката Gson, имаме на разположение няколко опции за конвертиране на суров JSON в други класове или структури от данни, с които можем да работим по-лесно.

Например можем да конвертираме JSON низове в Map или да създадем персонализиран клас с mappings.

Понякога обаче е удобно да можете да конвертирате нашия JSON в общ обект. В този урок ще видим как Gson може да ни даде JsonObject от низ.

2. Зависимост на Maven

На първо място, трябва да включим зависимостта на gson в нашия pom.xml :

 com.google.code.gson gson 2.8.5 

Можем да намерим най-новата версия на gson в Maven Central.

3. Използване на JsonParser

Първият подход, който ще видим за преобразуване на JSON String в JsonObject е двустепенен процес, който използва класа JsonParser .

В първата стъпка трябва да анализираме оригиналния низ .

Gson ни предоставя парсер, наречен JsonParser, който анализира посочения JSON String в синтактично дърво на JsonElements :

public JsonElement parse(String json) throws JsonSyntaxException

След като анализираме String в дърво на JsonElement , ще използваме метода getAsJsonObject () , който ще върне желания резултат.

Нека да видим как получаваме окончателния си JsonObject :

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. Използване на fromJson

Във втория ни подход ще видим как да създадем екземпляр на Gson и да използваме метода fromJson . Този метод десериализира посочения JSON String в обект от посочения клас:

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

Нека да видим как можем да използваме този метод, за да анализираме нашия JSON String , предавайки класа JsonObject като втори параметър:

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. Заключение

В този основен урок научихме два различни начина за използване на библиотеката Gson за получаване на JsonObject от JSON-форматиран низ в Java. Следователно трябва да използваме този, който се вписва по-добре с нашите междинни JSON операции.

Както обикновено, изходният код за тези примери е достъпен в GitHub.