Gson Parser Json avec un tableau avec les différents types d'objets
Comment puis-je analyser ce JSON à l'aide de Gson?
J'ai un tableau avec plusieurs types d'objet et je ne sais pas quel type d'objet que j'ai besoin de créer pour enregistrer cette structure. Je ne peux pas changer le json message (je n'ai pas de contrôle sur le serveur).
La seule classe de fonction (en quelque sorte) a ce
public class Response {
private List<Object> tr;
private int results;
(...)
}
JSON Message (Note du tableau avec plusieurs types d'objets.)
{
"tr":
[
{
"a":
{
"userId": "112"
}
},
{
"b":
{
"userId": "123",
"address":"street dummy"
}
},
{
"a":
{
"userId": "154"
}
}
],
"results":3
}
OriginalL'auteur Laranjeiro | 2013-02-05
Vous devez vous connecter pour publier un commentaire.
La Gson Guide de l'Utilisateur couvre explicitement ceci:
https://sites.google.com/site/gson/gson-user-guide#TOC-Serializing-and-Deserializing-Collection-with-Objects-of-Arbitrary-Types
Vous avez un objet avec un champ
tr
qui est un tableau contenant des types arbitraires.Le guide de l'utilisateur explique que vous ne pouvez pas directement désérialiser une telle structure, et recomends:
Dans votre cas ... il serait vraiment dépendre de ce que les objets étaient possibles dans ce tableau. Si ils vont tous avoir le même intérieur de l'objet que vous aimeriez faire quelque chose comme...
Et bien sûr, cela devra être à l'intérieur d'une coutume deserializer pour votre objet réel qui aurait
tr
etresults
champs.Maintenant vous êtes tous ensemble - vous pouvez l'utiliser deserializer et créer votre objet:
Si le
a
,b
etc sont importants ... eh bien, vous aurez à comprendre. Mais le ci-dessus devrait vous bien sur votre chemin à la compréhension de ce qui va être nécessaire pour faire face à votre structure JSON.Par souci d'exhaustivité, le seul "hacky" moyen de contourner cela est si il y a un nombre assez limité de ces types de l'intérieur de l'objet est aussi assez limité en termes de ses champs. Vous pouvez créer un POJO qui englobe toutes les possibilités:
Quand Gson désérialise JSON il sera mis en manque des champs dans votre POJO(s) à
null
. Vous pouvez maintenant avoirtr
être unList
ou un tableau de ces dans votre POJO. Et de souligner, c'est vraiment très hacky et la mauvaise façon de le faire, mais j'ai pensé que je voudrais vous expliquer ce qui serait nécessaire pour analyser directement de ce tableau.Mec, de quoi parles-tu? J'ai reçu l'e-mail d'alimentation de ces derniers et d'y répondre au déjeuner. Je viens de réaliser qu'il était en fait plus de douleur que d'abord regardé, mais à la fin ... oui, cela fonctionne.
OriginalL'auteur Brian Roach
Je chercher quelque chose de chaque réponse et il l'a fait de cette façon:
Réponse Objet
Générique Utilisateur
Un
B
L'Analyse De La Méthode
Ce n'est pas aussi élégant comme je le voulais et mélanger natif JsonObjects avec Gson méthodes mais qui fonctionne pour moi.
OriginalL'auteur Laranjeiro
Essayer ce code ici:
Utilisation:
Comme vous pouvez le voir j'ai besoin de modifier la structure:
Mais malheureusement je n'ai pas réussi à permettre à plusieurs clés. Droit maintenant, je n'ai aucune idée de comment résoudre ce problème.
Après avoir écrit ma réponse, j'ai demandé à moi-même. Je pense que la classe doit être remplacée par quelque chose d'autre. Je vais rechercher une alternative. Qu'est-ce que votre exception?
Peut-être un
Hashtable
peut slove le problème. Je vais écrire un scénario de test.Veuillez consulter ma réponse.
Je ne peux pas changer le JSON message.
OriginalL'auteur rekire
Je pense que ce lien peut vous aider à:
https://sites.google.com/site/gson/gson-user-guide#TOC-Collections-Examples
Fondamentalement, créer une classe pour votre "objet" (type d'utilisateur, je suppose), puis utilisez la désérialisation code de Gson, comme ceci:
OriginalL'auteur Aerilys
Vous pouvez créer des classes java correspondantes pour les objets json. L'entier, chaîne de valeurs peut être mappé comme est. Json peut être analysé comme celui-
Voici un exemple- http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html
OriginalL'auteur Harpreet