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.