Comment puis-je créer un multidimensionnelle HashMap ou table de hachage en JSP / Java et de le convertir en un objet JSON?
J'ai besoin d'aide pour créer un multidimensionnelle HashMap ou table de hachage en JSP. Pourquoi dois-je besoin d'une table de hachage ou une table de hachage? Parce que j'ai finalement envie de transmettre au client un objet JSON. Si il est une autre façon pour finalement arriver à un objet JSON, je suis tout ouïe.
Je voulais aussi mentionner que ce fil a été très précieuse et j'ai été en expansion sur elle:
Voici ce que je veux que le résultat ressemble à ceci:
{
"results": [ {
"address_components": [ {
"long_name": "1600",
"short_name": "1600"
}, {
"long_name": "Amphitheatre Pkwy",
"short_name": "Amphitheatre Pkwy"
}, {
"long_name": "Mountain View",
"short_name": "Mountain View"
}, {
"long_name": "California",
"short_name": "CA"
}, {
"long_name": "United States",
"short_name": "US"
}, {
"long_name": "94043",
"short_name": "94043"
} ]
} ]
}
Voici mon code JSP, qui utilise un exemple trivial, au lieu de données du monde réel, comme ci-dessus:
Hashtable results_hash = new Hashtable();
Hashtable numbers = new Hashtable();
Hashtable[] arr = new Hashtable[10];
for (int i=0; i < 10; i++)
{
numbers.put("Number",i);
numbers.put("Numberx2",i*2);
arr[i] = new Hashtable();
arr[i].put("Comp",numbers);
results_hash.put("results",arr[i]);
}
com.google.gson.Gson gson = new com.google.gson.Gson();
String json = gson.toJson(results_hash);
out.print(json);
Mais l'objet JSON ressemble à ceci:
{
"results": {
"Comp": {
"Numberx2":18,
"Number":9
}
}
}
Ce n'est pas le résultat souhaité. C'est seulement en prenant le dernier résultat et de le convertir en JSON. Donc, le problème commence avec la multidimensionnel de hachage pas construit correctement. Je ne suis pas sûr de ce qui est le problème, cependant. J'apprécierais un peu d'aide. Merci.
Vous devez vous connecter pour publier un commentaire.
En JSON,
{}
est transposable en tant que JavaMap
et la[]
est transposable en tant que JavaList
.Donc, pour atteindre les objectifs suivants format JSON,
vous avez besoin d'un (profonde respiration)
Map<String, List<Map<String, List<Map<String, String>>>>>
.Mieux est de l'utiliser juste fullworthy Javabeans au lieu de
Map<String, String>
.Map
est une interface.HashMap
est une mise en œuvre.Hashtable
est l'héritage predecesor deHashMap
qui a succédé il y a une décennie (lire à jour des tutoriels, des livres s'il vous plaît). download.oracle.com/javase/tutorial/collections/interfaces/...Map
etList
DE dynamiquement redimensionnable. Appelez simplementadd()
ouput()
pour ajouter de nouveaux éléments, exactement comme dans ma réponse. Cliquez sur le tutoriel lien dans mon commentaire précédent pour en savoir plus à ce sujet.essayer cette
La ligne
results_hash.put("résultats",arr[i]);
écrasera la dernière entrée avec la même clé dans votre table de hachage. Votre juste remplacer l'entrée avec la touche "résultats", pour ne pas en rajouter.
Essayer quelque chose comme (pseudo-code):
Ne l'ai pas testé, mais j'espère que vous avez compris l'idée... vous avez besoin pour obtenir le premier la structure de données à droite.