Библиотека Google Json Parsing Gson: Какая разница между JsonElement и JsonObject?
public abstract class JsonElement extends Object
Класс, представляющий элемент Json. Это может быть JsonObject, JsonArray, JsonPrimitive или JsonNull.
public final class JsonObject extends JsonElement
Класс, представляющий тип объекта в Json. Объект состоит из пар имя-значение, где имена - это строки, а значения - любой другой тип JsonElement. Это позволяет создать дерево JsonElements. Элементы-члены этого объекта поддерживаются для их добавления.
Yay google!
Не обращай внимания на этот вопрос.
Ответы
Ответ 1
JsonElement
содержит общий код для всех допустимых типов в JSON:
- JSONObject
- JsonArray
- JsonPrimitive (строка, число, логическое значение)
- JsonNull
Это позволяет вам написать метод, который принимает JsonElement
, который работает с любым из вышеуказанных типов.
Ответ 2
JsonElement
является базовым типом для всех различных конкретных типов - это базовый класс с общими вещами, которые должны реализовывать все узлы. Логично, что это имеет большой смысл.
То, что все специфические типы наследуют от JsonElement
, также хорошо для вас. Это позволяет вам проверить, является ли объект представлением узла Json, просто проверив, наследуется ли он от JsonElement
.
Класс JsonElement
доступен для вас как общедоступный класс, вероятно, не потому, что вы хотите создать его подкласс, а потому, что вы хотите проверить его подклассы.