|
Désérialiser un résultat httpGET JSON |
Iniciado por OLIVIER, 03,ago. 2022 16:13 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 10 mensajes |
|
Publicado el 03,agosto 2022 - 16:13 |
Bonjour, je ne parviens pas à trouver ou se situe mon erreur dans ce code sous WINDEV20. Il s'agit pour moi de récupérer les coordonnées géographiques renvoyées par la requête httpGET. Je bugge au moment de la désérialisation du JSON retourné. Merci de votre aide.
ReqRecherche est un restRequête ReqRésultat est un restRéponse varVariant est un Variant
ReqRecherche.URL = "https://api-adresse.data.gouv.fr/search/?q="
PROCEDURE INTERNE AjouteParametre(pURL, Pcontenu) SI Contient(pURL,"+") = Vrai ALORS RENVOYER pURL + "+" + Pcontenu SINON RENVOYER pURL + Pcontenu FIN FIN
ReqRecherche.URL = AjouteParametre(ReqRecherche.URL,"le+capitole+31000+toulouse") Trace(ReqRecherche.URL)
ReqRecherche.Méthode = httpGet
ReqRésultat = RESTEnvoie(ReqRecherche) Trace(ReqRésultat.Contenu)
SI ErreurDétectée() ALORS Erreur(ErreurInfo(errComplet)) SINON varVariant = JSONVersVariant(ReqRésultat.Contenu) Trace(varVariant.features[1].geometry) FIN
Voici le JSON retourné : {"type": "FeatureCollection", "version": "draft", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [1.443107, 43.604178]}, "properties": {"label": "Place du Capitole 31000 Toulouse", "score": 0.6813681818181818, "id": "31555_1676", "name": "Place du Capitole", "postcode": "31000", "citycode": "31555", "x": 574268.42, "y": 6279586.71, "city": "Toulouse", "context": "31, Haute-Garonne, Occitanie", "type": "street", "importance": 0.74505}}, {"type": "Feature", "geometry": {"type": "Point", "coordinates": [1.449479, 43.602505]}, "properties": {"label": "Promenade des Capitouls 31000 Toulouse", "score": 0.48250782705099776, "id": "31555_1677", "name": "Promenade des Capitouls", "postcode": "31000", "citycode": "31555", "x": 574779.29, "y": 6279390.68, "city": "Toulouse", "context": "31, Haute-Garonne, Occitanie", "type": "street", "importance": 0.69783}}], "attribution": "BAN", "licence": "ETALAB-2.0", "query": "le capitole 31000 toulouse", "limit": 5}
|
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.886 mensajes Popularité : +227 (347 votes) |
|
Publicado el 04,agosto 2022 - 03:14 |
Bonjour, Il suffit de créer les classes ou structures nécessaires (normalement elle est dans la doc, sinon on décortique à la mainSTgeometry est une structure type est une chaîne coordinates est un tableau de chaînes FIN
STproperties est une structure label est une chaîne score est un numérique id est une chaîne name est une chaîne postcode est une chaîne citycode est une chaîne x est un numérique y est un numérique city est une chaîne context est une chaîne type est une chaîne importance est un numérique FIN
STfeatures est une structure type est une chaîne geometry est un STgeometry properties est un STproperties FIN
STRESULT est une structure type est une chaîne version est une chaîne features est un tableau de STfeatures attribution est une chaîne licence est une chaîne query est une chaîne limit est un entier FIN
Resultat est un STResult )
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
Publicado el 06,agosto 2022 - 15:45 |
Bonjour et merci. J'ai bien ça aussi mais je ne comprends pas ou je fais une erreur dans mon code. Pourriez-vous m'aider un peu ? Merci Olivier |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.886 mensajes Popularité : +227 (347 votes) |
|
Publicado el 06,agosto 2022 - 19:41 |
La réponse est dans ta question : il faut désérialiser. JSONVersVariant est inutile une fois qu'on à la structure/classe
... Désérialise(Résultat,ReqRésultat.Contenu,psdJSON) On voit par ailleurs que geometry est une structure, il faut donc accéder à ses membres pour les afficher (type et coordinate qui est lui même un tableau qu'il va falloir parcourir.)
-- Il y a peut être plus simple, mais, ça tourneMensaje modificado, 06,agosto 2022 - 19:50 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
Publicado el 09,agosto 2022 - 20:49 |
Un grand merci pour ces explications. J'ai enfin compris. Dur dur à 50 ans de raccrocher les wagonnets ! Bon ça fonctionne très bien maintenant. |
| |
| |
| | | |
|
| | | | |
| | |
|