Bonjour,
J'espere que je poste au bon endroit. Je cherche un moyen de convertir un resulset issu d'une requete a une base via JDBC en objet JSON. Connaissez-vous des librairies pour faire cela?
merci
Version imprimable
Bonjour,
J'espere que je poste au bon endroit. Je cherche un moyen de convertir un resulset issu d'une requete a une base via JDBC en objet JSON. Connaissez-vous des librairies pour faire cela?
merci
?
Une bonne bibliothèque JSON, on crée un tableau JSON vide, on parcourt le result set et pour chaque entrée, on crée un objet JSON avec les données et on l'ajoute à la fin du tableau JSON.
Une petite recherche Google JSON Java devrait te fournir plusieurs bibliothèques JSON.
une pas mal ici: http://www.json.org/java/
bonjour,
merci de votre reponse, je pensais qu'il devait exister quelque chose de deja fait. Mais non, du coup je l'ai fait a la main comme vous l'avez dit et ca fonctionne. Pour ceux que ca interesse, voici mon code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 JSONArray jsonArray = new JSONArray(); ResultSetMetaData resultMeta = result.getMetaData(); while (result.next()) { JSONObject json = new JSONObject(); for (int i = 1; i <= resultMeta.getColumnCount(); i++) { Object obj = result.getObject(i); if (obj == null) { json.put(resultMeta.getColumnName(i), "null"); } else { json.put(resultMeta.getColumnName(i), obj.toString()); } } jsonArray.add(json); }
bonjour,
Le problème est que si le résultat de la requête est important, le fichier json (stoker en mémoire) va devenir monstrueux :s
le fichier n'est pas stocké en mémoire mais envoyé a une page web dans un flux par une requête Ajax. C'est vrai que la quantité de données peut être importante, mais je ne vois pas comment faire autrement, car je dois récupérer les données par javascript dans la page web.
en faite le truc c'est que la avec ta boucle tu va stoker tout le résultat de la requête en mémoire avans de l'envoyer, pour y remédier tu pourrai écrire directement dans le flux.
genre:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 out.print("["); while (result.next()) { JSONObject json = new JSONObject(); for (int i = 1; i <= resultMeta.getColumnCount(); i++) { Object obj = result.getObject(i); json.put(resultMeta.getColumnName(i), (obj==null?"null":obj.toString())); } out.print(json.toString()); if(!result.isLast() out.print(","); } out.print("]");
c'est vrai j'aurais du penser envoyer dans le flux au fur et a mesure.
Merci pour le code corrige.