Подтвердить что ты не робот

Библиотека 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!

Не обращай внимания на этот вопрос.

4b9b3361

Ответ 1

JsonElement содержит общий код для всех допустимых типов в JSON:

  • JSONObject
  • JsonArray
  • JsonPrimitive (строка, число, логическое значение)
  • JsonNull

Это позволяет вам написать метод, который принимает JsonElement, который работает с любым из вышеуказанных типов.

Ответ 2

JsonElement является базовым типом для всех различных конкретных типов - это базовый класс с общими вещами, которые должны реализовывать все узлы. Логично, что это имеет большой смысл.

То, что все специфические типы наследуют от JsonElement, также хорошо для вас. Это позволяет вам проверить, является ли объект представлением узла Json, просто проверив, наследуется ли он от JsonElement.

Класс JsonElement доступен для вас как общедоступный класс, вероятно, не потому, что вы хотите создать его подкласс, а потому, что вы хотите проверить его подклассы.