PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → WD20 - Désérialiser du geoJSON façon GEOPORTAIL
WD20 - Désérialiser du geoJSON façon GEOPORTAIL
Débuté par OLIVIER, 09 aoû. 2022 21:05 - 1 réponse
Membre enregistré
10 messages
Posté le 09 août 2022 - 21:05
Bonjour,
je tente de désérialiser les données renvoyées par l'API du GEOPORTAIL mais sans grand succès.
Quelqu'un aurait il déjà joué avec le format geoJSON du GEOPORTAIL ?

Voilà ce qu'il se produit :
Si j'envoie l'adresse http de la requête GET sur Firefox, le retour ressemble vraiment beaucoup à du JSON :
https://wxs.ign.fr/calcul/geoportail/itineraire/rest/1.0.0/route…

Quand je désérialise le tout, j'ai le code erreur suivant :
Erreur à la ligne 113 du traitement Procédure globale PROC_Calcul_itineraire.
Vous avez appelé la fonction Désérialise.
Format JSON invalide

----- Informations techniques -----

Projet : ADRASEC

Appel WL :
Traitement de 'Procédure globale PROC_Calcul_itineraire' (COL_Fonctionnelles.PROC_Calcul_itineraire), ligne 113, thread 0
Fonction 'Désérialise', syntaxe 0

Que s'est-il passé ?
Format JSON invalide

Code erreur : 40129
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd200xml.dll' (20.0.31.0).
Informations de débogage :
Fonction (0,124)
Informations supplémentaires :
EIT_PILEWL :
Procédure globale PROC_Calcul_itineraire (COL_Fonctionnelles.PROC_Calcul_itineraire), ligne 113
Clic sur BTN_itineraire_procedure (FEN_principale.BTN_itineraire_procedure), ligne 4
EIT_DATEHEURE : 09/08/2022 20:57:12


Le convertisseur JSON vers WINDEV converti très bien le tout ce qui me laisse à penser que c'est quand même un standard très proche du JSON et GEOPORTAIL affirme respecter la norme JSON :
STgeometry est une structure
coordinates est un tableau de tableau de numériques
type est une chaîne
FIN

STname est une structure
nom_1_gauche est une chaîne
nom_1_droite est une chaîne
cpx_numero est une chaîne
cpx_toponyme est une chaîne
FIN

STinstruction est une structure
type est une chaîne
modifier est une chaîne
FIN

STattributes est une structure
name est un STname
FIN

STsteps est une structure
geometry est un STgeometry
attributes est un STattributes
distance est un numérique
duration est un numérique
instruction est un STinstruction
FIN

STportions est une structure
start est une chaîne
'END' est une chaîne
distance est un numérique
duration est un numérique
bbox est un tableau de chaînes
steps est un tableau de STsteps
FIN

STRESULT est une structure
Resource est une chaîne
resourceVersion est une chaîne
start est une chaîne
'END' est une chaîne
profile est une chaîne
optimization est une chaîne
geometry est un STgeometry
crs est une chaîne
distanceUnit est une chaîne
timeUnit est une chaîne
bbox est un tableau de chaînes
distance est un numérique
duration est un numérique
portions est un tableau de STportions
constraints est un tableau de chaînes // Tableau vide, type indéfini
FIN

Resultat est un STResult


Merci de votre aide.
Olivier
Membre enregistré
3 886 messages
Popularité : +227 (347 votes)
Posté le 09 août 2022 - 22:40
Bonjour,
En copiant les données que tu reçois dans un JSON, le code suivant renvoie un résultat correct :
saItinéraire est une chaîne
stRésultat est STRESULT

saItinéraire=ChaîneConstruit("%1Itinéraire.JSON",ComplèteRep(fRepDonnées))
Désérialise(stResultat,fChargeBuffer(saItinéraire),psdJSON)

Après, sans ton code, c'est difficile d'en dire plus

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 09 août 2022 - 23:03