web-dev-qa-db-fra.com

Bibliothèque Json Parsing Gson de Google: Quelle est la différence entre JsonElement et JsonObject?

public abstract class JsonElement extends Object 

Une classe représentant un élément de Json. Il peut s'agir d'un JsonObject, d'un JsonArray, d'un JsonPrimitive ou d'un JsonNull.

public final class JsonObject extends JsonElement 

Une classe représentant un type d'objet dans Json. Un objet se compose de paires nom-valeur où les noms sont des chaînes et les valeurs sont tout autre type de JsonElement. Cela permet de créer une arborescence de JsonElements. Les éléments membres de cet objet sont conservés dans l'ordre où ils ont été ajoutés.

Ouais google!

Peu importe cette question.

34
Teddy

JsonElement contient un code commun pour tous les types valides en JSON:

  • JsonObject
  • JsonArray
  • JsonPrimitive (chaîne, nombre, booléen)
  • JsonNull

Cela vous permet d'écrire une méthode qui prend un JsonElement qui fonctionne avec l'un des types ci-dessus.

30
Juan Mendes

JsonElement est le type de base pour tous les différents types spécifiques - c'est une classe de base avec des éléments communs que tous les nœuds doivent implémenter. Logiquement, cela a beaucoup de sens.

La chose que tous les types spécifiques héritent de JsonElement est également une bonne chose pour vous. Il vous permet de tester si un objet est une représentation de noeud Json, simplement en vérifiant s'il hérite de JsonElement.

La classe JsonElement est à votre disposition en tant que classe publique probablement pas parce que vous souhaitez la sous-classer, mais parce que vous souhaitez tester ses sous-classes.

4
Sune Rasmussen