|
Désérialiser un résultat httpGET JSON |
Débuté par OLIVIER, 03 aoû. 2022 16:13 - 4 réponses |
| |
| | | |
|
| |
Membre enregistré 10 messages |
|
Posté le 03 août 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}
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 883 messages Popularité : +227 (347 votes) |
|
Posté le 04 août 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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 10 messages |
|
Posté le 06 août 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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 883 messages Popularité : +227 (347 votes) |
|
Posté le 06 août 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 tourneMessage modifié, 06 août 2022 - 19:50 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 10 messages |
|
Posté le 09 août 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. |
| |
| |
| | | |
|
| | | | |
| | |
|