J'essaie de tester mon service REST par une chaîne JSON à partir du client Advanced REST de Chrome. J'ai un JSON imbriqué ici. Je prends cela comme la chaîne et la cartographie à ma classe POJO:Récupération des valeurs du JSON imbriqué après désérialisation
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(addressString, AddressPOJO.class);
Ici, addressString contient la chaîne JSON ci-dessous
{
"location":"[{\"Asia\":[{\"India\":[{\"city\":\"Bengaluru\"}]}], [{\"India\":[{\"city\":\"Mumbai\"}]}]}]
}
Mon AddressPOJO a variable:
Map<String,?> location = new HashMap();
Je récupère les valeurs du POJO par
Map<String, ?> locations = addressPOJO.getLocation();
Iterator iterator1 = locations.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry pair1 = (Map.Entry)iterator1.next();
Map<String,?> cities = (Map<String,?>) pair1.getValue();
Iterator iterator2 = dataSets.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry pair2 = (Map.Entry)iterator2.next();
Map<String,?> city = (Map<String, ?>) pair2.getValue();
}
}
Ici, je ne suis en mesure de retieve la deuxième entrée qui est
[{\"India\":[{\"city\":\"Mumbai\"}]}]
je dois récupérer toutes les entrées. J'ai également essayé d'utiliser MultiMap comme ceci
MultiMap cities = (MultiMap) pair1.getValue();
Mais ceci n'est pas accepté par le compilateur. Veuillez noter que toutes les entrées sont de nature dynamique et que les paires (clé, valeur) changent selon la saisie de l'utilisateur. Toutes les suggestions comment je peux récupérer toutes les entrées dans cet exemple.
Merci pour votre réponse. Désolé, je dois avoir mentionné que je supprime tous les '[' caractères de JSON avant de le mapper au POJO. Mon gars de frontend peut-être utiliser des tableaux pour générer du JSON et donc '['. De plus, l'exemple que j'ai donné ici n'est pas la chose exacte dont je parle. Je viens de donner un exemple de libellé. Donc, comme mentionné, je reçois la clé "Inde" plus d'une fois. Ce ne sera pas unique. Je le rend maintenant unique en le traçant avec '_' et un certain nombre aléatoire. Faites-moi savoir si je peux y faire face sans utiliser de nombre aléatoire. Merci encore. –
Salut, Abhiram, de toute façon je pense que c'est mieux pour vous de ne pas utiliser "Map" car dans votre exemple la chaîne de localisation n'est pas une carte mais une "Liste". Si vous voulez utiliser map, essayez "LinkedHashMap" car c'est toujours la façon dont ObjectMapper représente un objet. –