Bonjour,
j’essaie d’obtenir le résultat de ma requête sql sous une forme valide JSON.
J’ai vue que certain utilisé JSONBuilder dans mon cas de figure par contre j’obtient un résultat non valide( = à la place des : et pas de “” entre les clés et valeurs)
Requête : select * from Batiment
Script :
import groovy.json.JsonBuilder;
List<Object> listBatiment = new ArrayList<Object>();
while(resultset.next()){
def builder = new JsonBuilder();
def line = builder {
Batiment resultset.getString("Batiment")
Reference resultset.getString("Reference")
Nom resultset.getString("Nom")
Secteur resultset.getString("Secteur")
Type resultset.getString("Type")
Adresse resultset.getString("Adresse")
}
listBatiment.add(line);
}
return listBatiment;
Resultat : [{Batiment=x, Reference=N0294014, Nom=Immeuble, Secteur=Rue, Type=T1, Adresse=x france}, {Batiment=chateau, Reference=N00023, Nom=palace, Secteur=espace, Type=T100, Adresse=Avenue 89}]
Si quelqu’un à une idée de ce qu’il me manque merci d’avance.
Bonjour,
Tu peux utiliser le code ci-dessous au niveau de la récupération des retours du connecteur, il retourne un résultat json valide:
import java.sql.ResultSetMetaData;
import org.json.JSONArray;
import org.json.JSONObject;
String jsonString = “”;
JSONObject jsonobject = null;
JSONArray jsonArray = new JSONArray();
while (resultset.next()) {
ResultSetMetaData metaData = resultset.getMetaData();
jsonobject = new JSONObject();
for (int i = 0; i < metaData.getColumnCount(); i++) {
jsonobject.put(metaData.getColumnLabel(i + 1),resultset.getObject(i + 1));
}
jsonArray.put(jsonobject);
}
if (jsonArray.length() > 0) {
jsonString= jsonArray.toString();
}
return jsonString;
Bonjour,
Vous pouvez utiliser le JSonBuilder de cette manière:
import groovy.json.JsonBuilder;
def listBatiment = []
while(resultset.next()){
listBatiment.add([
Batiment:resultset.getString('Batiment'),
Reference:resultset.getString('Reference'),
Nom:resultset.getString('Nom'),
Secteur:resultset.getString('Secteur'), Type:resultset.getString('Type'),
Adresse:resultset.getString('Adresse')
])
}
return new JsonBuilder(listBatiment).toString()
Vous pouvez effectuer le chemin inverse (String -> Object) en utilisant le JSonSlurper:
import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
def object = slurper.parseText(jsonString)
//WARING object can be a List if the jsonString is an Array
return object.Batiment //or object[0].Batiment if object is List
Vous pouvez utiliser une opération (en sortie de connecteur ou dans une activité) pour assigner la valeur a une variable metier.
HTH
Romain
Bonjour,
J'ai essayé le code ci-dessus pour un besoin similaire, et ça marche. Par contre, comme on récupère un résultat sous forme de String, comment peut-on faire pour le stocker dans une variable métier multiple, composée d'autant de sous-variables que de colonnes résultantes du connecteur (dans l'exemple ci-dessus : batiment, reference, etc.) ?
D'avance, merci,
Thierry.