PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Copie de JSON vers classe ou structure
Copie de JSON vers classe ou structure
Débuté par Pierre, 21 oct. 2018 18:21 - 2 réponses
Membre enregistré
150 messages
Popularité : +1 (1 vote)
Posté le 21 octobre 2018 - 18:21
Bonjour,
J'ai un websservice REST qui me retourne un tableau de structure en JSON

Voici la génération
STUneMission est une structure
IdMission est un entier
Plaque est une chaîne
Marque est une chaîne
Modèle est une chaîne
Nom est une chaîne
DateSinistre est une Date
VéhiculeChoc est une chaîne
Véhiculechassis est une chaîne
CieIntervenant est une chaîne <MAPPING=IntervenantCie>
FIN

sListeRenvoi est une chaîne
tabListeMission.SupprimeTout()
SI nIdMission=0 ALORS //On les prend toutes
HExécuteRequête(REQ_MissionsLst)
FichierVersTableau(tabListeMission,REQ_MissionsLst)
SINON
HLitRecherche(Mission,IDMission,nIdMission)
SI HTrouve(Mission)ALORS
stMissionEncours=Mission
Ajoute(tabListeMission,stMissionEncours)
FIN
FIN

Sérialise(tabListeMission,sListeRenvoi,psdJSON)
RENVOYER sListeRenvoi


Voici la réception sur un mobile android
MaQuestion est un restRequête
MaRéponse est un restRéponse
vContenu est un Variant

MaQuestion.URL="http://I7-Dvp/Missions/"

MaRéponse=RESTEnvoie(MaQuestion)
gtabMissionsLst.SupprimeTout()

SI PAS ErreurDétectée ALORS
vContenu=JSONVersVariant(MaRéponse.Contenu)
POUR TOUT UneMission de vContenu
stNewMission est une STUneMission
stNewMission=UneMission
stNewMission.Nom=UneMission.nom
stNewMission.Marque=UneMission.marque
stNewMission.Modele=UneMission.modèle
stNewMission.Plaque=UneMission.plaque
// stNewMission<=UneMission
Ajoute(gtabMissionsLst,stNewMission)
Ajoute(gtabMissionsFromClass,clMissonFromClass)
// Trace(UneMission.Nom)
FIN

FIN


Dans le simulateur, çà passe. Par contre, sur le téléphone, si je n'affecte pas membre par membre comme ci-dessus j'ai un rapport d'erreur qui dit qu'on ne peut copier dans un objet qu'un objet identique.

C'est peut-être une question de format unicode/ansi mais je n'ai pas trouvé.

Connaissez-vous un moyen pour éviter de copier membre par membre.

PS : La déclaration de structure est identique d'un projet WD23 au WM23

Merci d'avance
Pierre
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 22 octobre 2018 - 09:57
Bonjour,

Tu as essayé d'utiliser Désérialise() en lieu et place de JSONVersVariant(). Tu sérialises d'un côté, donc tu désérialises de l'autre. Le format n'est peut-être pas tout à fait le même d'une fonction à une autre.

--
Cordialement,

Philippe SAINT-BERTIN
Posté le 24 octobre 2018 - 14:54
Philippe SB a exposé le 22-10-18 :
Bonjour,

Tu as essayé d'utiliser Désérialise() en lieu et place de JSONVersVariant().
Tu sérialises d'un côté, donc tu désérialises de l'autre. Le format n'est
peut-être pas tout à fait le même d'une fonction à une autre.


Désolé pourle retard mais je viens de faire le test à l'instant.

Effectivement, ce sont les mêmes ... mais pas trop !

Avec Désérialise() tout passe en un bloc

Merci

--
Cordialement,
Pierre