2017-09-30 9 views
1

Je veux créer un POJO d'un JSON comme celui-ciCréer POJO de JSON généré par la touche => Valeur Tableau

{ 
     "1": [ 
      { 
       "idmapel": 1, 
       "label": "Fisika" 
      }, 
      { 
       "idmapel": 2, 
       "label": "Kimia" 
      }, 
      { 
       "idmapel": 3, 
       "label": "Biologi" 
      }, 
      { 
       "idmapel": 4, 
       "label": "Matematika" 
      }, 
     ], 
    "2":[ 
    { 
     "idmapel": 1, 
     "label": "Fisika" 
    } 
    ] 
} 

quand je produis de http://www.jsonschema2pojo.org/ il a créé un 1 et 2 classes, mais imaginez si j'ai plus que 2 clés. Je veux être en mesure d'accéder à l'élément par quelque chose comme ceci ObjectClass::getList(1) ou ObjectClass::getList(2)

+0

Pouvez-vous élaborer? J'imagine plus de 2 clés, mais rien ne semble se passer. Vous dites que cela fonctionne - êtes-vous inquiet au sujet de l'évolutivité ou de quelque chose? Si oui, quelles sont vos préoccupations? –

+0

Je récupère cela à partir du serveur avec retrofit, le résultat peut contenir la clé 1,2,3, .., n, dépendent des données, alors ce que je veux, c'est que je veux être en mesure de récupérer par la clé, si je veux obtenir la collection avec 1 clé, il devrait être accessible via ObjectClass :: get (clé) où la clé est 1, 2, ou quelle que soit la clé sur ce json –

Répondre

1

Vous pouvez utiliser un Map pour ce faire.

Map<String, List<Pojo>> map = deserialize(jsonSring); 

Pojo est la classe qui comporte des champs idmapel et label, deserialize est un procédé qui désérialise la json à l'objet et jsonString est la valeur de chaîne json à désérialiser. Ensuite, vous pouvez accéder aux listes avec les touches

List<Pojo> list1 = map.get("1"); 
List<Pojo> list2 = map.get("2"); 
+0

semble être la meilleure approche, va essayer –