PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Json et structure
Json et structure
Débuté par ovi, 01 nov. 2021 18:41 - 7 réponses
Membre enregistré
48 messages
Posté le 01 novembre 2021 - 18:41
Bonjour à tous,

J'aimerais enregistrer des données json converti en variant. Voici les données JSON





Et voici mon code
vMonvariant est un Variant

vMonvariant = JSONVersVariant(oRéponse..Contenu)

STlist est une structure
Id est un entier
IsRegistered est un booléen
Number est une chaîne
FirstName est une chaîne
LastName est une chaîne
Email est une chaîne
Password est une chaîne
MobileNumber est une chaîne
OutboundCallerId est une chaîne
Phones est un entier
MacAddress est une chaîne
Membership est une chaîne
CurrentProfile est une chaîne
DND est un entier

FIN

//tabList est un tableau de STlist
stMonob est un STlist

POUR TOUT stListelement de vMonvariant.Occurrence
stMonob.Id = vMonvariant.list[stListelement].Id
stMonob.FirstName = vMonvariant.list[stListelement].FirstName


FIN


Je ne vois pas ce que je fais faux. Qqun peut-il me donner un coup de main ?

D'avance merci et bonne soirée :)
Membre enregistré
4 334 messages
Posté le 01 novembre 2021 - 19:24
Bonjour,
As tu regardé du côté de la désérialisation ?

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
48 messages
Posté le 01 novembre 2021 - 22:22
Hello,

Non pas vraiment, quelle est la différence ou avantage ?

Merci beaucoup
Membre enregistré
4 334 messages
Posté le 01 novembre 2021 - 23:42
La sérialisation consiste à convertir des données stockées en mémoire, dans ton cas un tableau de structure en un ensemble d'octets pour les sauvegarder dans un fichier ou les transmettre via le réseau. Cette conversion se fait en XML, en JSON ou en binaire.
La désérialisation est l'opération inverse.
Prenons le code suivant :
STToto est une structure
m_saNom est chaîne
m_tabInt est tableau de 3 entiers
FIN
tabListeToto est tableau de STToto
stMonToto est STToto
bufSerial est Buffer

stMonToto.m_saNom="Titi"
stMonToto.m_tabInt[1]=3
stMonToto.m_tabInt[2]=4
stMonToto.m_tabInt[3]=5
TableauAjoute(tabListeToto,stMonToto)
stMonToto.m_saNom = "Tata"
stMonToto.m_tabInt[1] = 4
stMonToto.m_tabInt[2] = 5
stMonToto.m_tabInt[3] = 6
TableauAjoute(tabListeToto,stMonToto)

Pour envoyer le contenu du contenu de la mémoire pointant sur tabListeToto, on est obligé de le convertir en une série d'octets via :

Sérialise(tabListeToto,bufSerial,psdJSON)

(ou une fonction équivalente en fonction du langage)
Si on regarde le buffer qui va être transmis, on obtient cela :
[ { "m_saNom":"Titi", "m_tabInt":[ 3, 4, 5 ] }, { "m_saNom":"Tata", "m_tabInt":[ 4, 5, 6 ] } ]


Pouf, c'est parti........

A l'autre bout on reçoit le buffer

On va utiliser un tableau de structure ayant les mêmes caractéristique (ie même nom et même type de membre) et Napuka désérialiser

Désérialise(tabListeToto,oRéponse..Contenu,psdJSON)

En mémoire (dans tabListeToto) on a bien ce qui a été envoyé

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
4 334 messages
Posté le 02 novembre 2021 - 00:02
Par ailleurs, pour que ton code fonctionne, il faut faire une truc du style :
POUR TOUT stListelement de vMonvariant.Occurrence
stMonob.Id =stListelement.Id
stMonob.FirstName = stListelement.FirstName
......
FIN


--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
48 messages
Posté le 02 novembre 2021 - 07:51
Hello,

Merci Voroltinquo je vais tester ça dès mon retour au bureau.
Posté le 02 novembre 2021 - 10:55
Le 01/11/2021, ovi a supposé :
Bonjour à tous,

J'aimerais enregistrer des données json converti en variant. Voici les
données JSON





Et voici mon code
vMonvariant est un Variant

vMonvariant = JSONVersVariant(oRéponse..Contenu)

STlist est une Structure
Id est un entier
IsRegistered est un booléen
Number est une chaîne
FirstName est une chaîne
LastName est une chaîne
Email est une chaîne
Password est une chaîne
MobileNumber est une chaîne
OutboundCallerId est une chaîne
Phones est un entier
MacAddress est une chaîne
Membership est une chaîne
CurrentProfile est une chaîne
DND est un entier

FIN

//tabList est un tableau de STlist
stMonob est un STlist

POUR TOUT stListelement DE vMonvariant.Occurrence
stMonob.Id = vMonvariant.list[stListelement].Id
stMonob.FirstName = vMonvariant.list[stListelement].FirstName


FIN


Je ne vois pas ce que je fais faux. Qqun peut-il me donner un coup de main ?

D'avance merci et bonne soirée :)


bonjour,

j'essayerais ceci :

POUR TOUT stListelement DE vMonvariant.list.Occurrence
.....

--
Cordialement JeAn-PhI
Membre enregistré
48 messages
Posté le 02 novembre 2021 - 12:13
Hello,

J'ai réussi en faisant ce code :merci:

STlist est une Structure
Id est un entier
IsRegistered est un booléen
Number est une chaîne
FirstName est une chaîne
LastName est une chaîne
Email est une chaîne
Password est une chaîne
MobileNumber est une chaîne
OutboundCallerId est une chaîne
Phones est un entier
MacAddress est une chaîne
Membership est une chaîne
CurrentProfile est une chaîne
DND est un entier

FIN


stMonob est un STlist

POUR TOUT stListelement DE vMonvariant.list
stMonob.Id = stListelement.Id
stMonob.FirstName = stListelement.FirstName
stMonob.LastName = stListelement.LastName
stMonob.OutboundCallerId = stListelement.OutboundCallerId


FIN


Merci à tous :merci: