PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → Désérialisation d'une structure contenant un Tableau associatif sur Android
Désérialisation d'une structure contenant un Tableau associatif sur Android
Started by Yvan, Dec., 14 2020 1:07 PM - 3 replies
Registered member
202 messages
Popularité : +6 (6 votes)
Posted on December, 14 2020 - 1:07 PM
Bonjour,

Je récupère depuis un webservice (Windev) une structure soit :
STRV_BasicResponseTA est une structure
nCode est un entier
bufRetour est une Buffer
sMessage est une chaîne
sEncodage est une chaîne
taMessage est un tableau associatif de chaînes
FIN

Cette structure est sérialisée en JSON (format de la réponse coté webservice = JSON(tUTF-8)

Je me suis perdu dans plein de conjectures car ce projet qui est IOS et Android, fonctionnait bien en IOS et en simulateur IOS ET Android.

Après pas mal de test, je m'aperçois que lorsque je récupère la structure sur un terminal Android, Windev plante lors de la désérialisation, et ce, tant que la structure contient un tableau associatif (qu'il soit vide ou avec au moins une ligne). Si je retire ce tableau assoc, sur le Webservice et sur le terminal mobile, plus de plantage.
Désérialise(stBasicResponseTA,m_rRep..Contenu,psdJSON)

Erreurinfo me remonte pas de message d'erreur système

Ca vous parle?
Posted on July, 30 2021 - 2:31 AM
bonjour,
j'ai le meme problème, en v26 avez-vous trouvé une solution ?

Erreur : Format de sérialisation incorrect.
Registered member
3,311 messages
Popularité : +93 (137 votes)
Posted on July, 30 2021 - 10:56 AM
Je pencherais pour un problème d'encodage
Regarde du côté de utf8 vers unicode
Posted on August, 04 2021 - 8:43 AM
Bonjour,

J'avais le même problème avec un tableau de tableau de chaine (pour la variable coordinates), ci-joint le code que j'ai utilisé pour corriger le problème (plantage) avec Android.

En fait, il ne faut pas désérialiser le la réponse json reçue.

En espérant que cela va vous aider.


cMaRequête..URL = sUrl
cMaRequête..Méthode = httpGet
cMaRequête..Contenu = ""
cMaReponse = RESTEnvoie(cMaRequête)


SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
SI cMaReponse..CodeEtat = 200 ALORS
ChaineRéponseJSON est JSON = cMaReponse..Contenu
POUR TOUT Xrecords de ChaineRéponseJSON.records
Ligne est une CartePolyligne
Position est une geoPosition
POUR i=1 À Xrecords.fields.geo_shape.coordinates..Occurrence
SI Xrecords.fields.geo_shape.coordinates[i][1] <> 0 ALORS
Position.Longitude = Xrecords.fields.geo_shape.coordinates[i][1]
Position.Latitude = Xrecords.fields.geo_shape.coordinates[i][2]
Ajoute(Ligne.Point, Position)
FIN
FIN
Ligne.Epaisseur = 2
Ligne.CouleurTrait = BleuClair
CarteAjouteForme(Xcarte,Ligne)
FIN
FIN
FIN