L'analyse JSON tableau en java.util.Liste avec Gson
J'ai un JsonObject
nommé "mapping"
avec le contenu suivant:
{
"client": "127.0.0.1",
"servers": [
"8.8.8.8",
"8.8.4.4",
"156.154.70.1",
"156.154.71.1"
]
}
Je sais que je peux obtenir le tableau "servers"
avec:
mapping.get("servers").getAsJsonArray()
Et maintenant, je veux analyser que JsonArray
dans un java.util.List
...
Quelle est la meilleure façon de le faire?
- Double Possible de moyen Facile de changer Itérable en Collection ou Convertir Itérateur de liste de tableaux.
- il y a beaucoup de différences entre celui-ci et à cette question. Il s'agit
Gson
. - jetez un oeil à la réponse.J'espère qu'il permettra de résoudre votre problème.
- oui je suis d'accord avec vous et je sais
JsonArray
implémenteIterable
. C'est juste que je suis également de trouver de nouvelles façons autres que l'ajout d'une nouvelle bibliothèque.
Vous devez vous connecter pour publier un commentaire.
Certainement la façon la plus simple pour cela est d'utiliser Gson par défaut de la fonction d'analyse syntaxique
fromJson()
.Il s'agit d'une implémentation de cette fonction convient pour quand vous en avez besoin pour désérialiser en tout
ParameterizedType
(par exemple, toutList
), qui estfromJson(JsonElement json, Type typeOfT)
.Dans votre cas, vous avez juste besoin de la
Type
d'unList<String>
et ensuite d'analyser le tableau JSON dansType
, comme ceci:Dans votre cas
yourJson
est unJsonElement
, mais il pourrait aussi être unString
, toutLecteur
ou unJsonReader
.Vous pouvez prendre un coup d'oeil à Gson documentation de l'API.
Type
peut être trouvé dans ce paquet?Type
Java est intégré dans l'interface situé dans le packagejava.lang.reflect
getString()
au lieu deget()
ou d'autre.fromJson()
a été se plaindre.Code ci-dessous est à l'aide de
com.google.gson.JsonArray
.J'ai imprimé le numéro de l'élément dans la liste ainsi que les éléments de la Liste
SORTIE
J'ai lu la solution depuis le site officiel de Gson à ici
Et ce code pour vous:
Suite afficher sur le moniteur:
new Gson().fromJson()
J'ai été en mesure d'obtenir la liste de mappage de travail avec l'aide de
@SerializedName
pour tous les domaines.. pas de logique autour deType
était nécessaire.L'exécution du code - à l'étape 4 ci-dessous - via le débogueur, je suis en mesure de constater que la
List<ContentImage> mGalleryImages
objet rempli avec les données JSONVoici un exemple:
1. Le JSON
2. La classe Java avec la Liste
3. La classe Java pour les éléments de la Liste
4. Le code Java qui traite le JSON