PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Sérialisation / Désérialisation d'un tableau associatif d'objets hérités
Sérialisation / Désérialisation d'un tableau associatif d'objets hérités
Iniciado por jamblard, 17,abr. 2020 12:35 - 5 respuestas
Publicado el 17,abril 2020 - 12:35
Bonjour,

J'ai atteint mes limites dans la manipulation de la sérialisation et la désérialisations d'objets.

Pour contextualiser le problème je dispose de
- Classe A, abstraite
- Classe B, hérite de A
- Classe C
tab est un tableau associatif <Sérialise = "tab"> de A dynamique
FIN

Dans l'utilisation j'ai dans un premier temps instancier un objet de type B que j'ajoute dans mon tableau associatif.

Item_B est un B
Item_C est un C
Item_C.tab[1] = B

Jusque là pas de problème, je retrouve bien ma définition de Item_B dans mon tableau.

Ensuite je sérialise mon tableau et en résultat j'ai
<?xml version="1.0"?>
<c>
<tab>
<item>
<key>1</key>
<value>
-- JE RETROUVE ICI BIEN LA DEFINITION DE MA CLASSE B --
</value>
</item>
</tab>
</c>

Toutes mes informations sont bien stockées, le problème que je rencontre, c'est quand maintenant je souhaite récupérer mon tableau.
Je désérialise mais en retour je ne récupère que la définition de la classe parente A. Je n'arrive absolument pas a récupérer la définition de mes objets hérités.

J'espère avoir été clair,

Merci pour votre,

Julien
Miembro registrado
1.173 mensajes
Publicado el 17,abril 2020 - 17:08
Bonjour,

La dé-sérialisation de fait vers un tableau de A dynamique ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev (initiation aux classes) : https://coursdinfo.teachable.com/p/windev-programmer-avec-les-classes
Formateur bureautique (individualisation) : https://coursdinfo.net
Publicado el 20,abril 2020 - 08:48
Bonjour,

Ca sera certainement beaucoup plus parlant avec des brides de codes.















Dans le ta_modules de configuration j'y ai ajouté un herisson.
h est un herisson
ta_modules[1] = h

Cela semble fonctionner du fait qu'en évaluant le tableau de mon objet configuration j'y retrouve bien la structure complète de mon tableau. Structure que je retrouve également bien dans mon fichier XML.
C4est la désérialisation maintenant qui me pose problème.

<?xml version="1.0"?>
<configuration>
<modules>
<item>
<key>1</key>
<value>
<module_actif>0</module_actif>
<schema></schema>
<table_synchro></table_synchro>
</value>
</item>
</modules>
</configuration>


Merci pour votre aide,

Julien
Publicado el 20,abril 2020 - 08:48
Bonjour,

Ca sera certainement beaucoup plus parlant avec des brides de codes.















Dans le ta_modules de configuration j'y ai ajouté un herisson.
h est un herisson
ta_modules[1] = h

Cela semble fonctionner du fait qu'en évaluant le tableau de mon objet configuration j'y retrouve bien la structure complète de mon tableau. Structure que je retrouve également bien dans mon fichier XML.
C4est la désérialisation maintenant qui me pose problème.

<?xml version="1.0"?>
<configuration>
<modules>
<item>
<key>1</key>
<value>
<module_actif>0</module_actif>
<schema></schema>
<table_synchro></table_synchro>
</value>
</item>
</modules>
</configuration>


Merci pour votre aide,

Julien
Miembro registrado
499 mensajes
Publicado el 20,abril 2020 - 10:13
Bonjour,

Pouvez-vous nous montrer le bout de code qui réalise la sérialisation ? J'ai l'impression que vous utilisez l'option psdXMLAgrégé, or la documentation officielle stipule bien que si cette option est utilisée, la désérialisation ne retrouvera pas les types de variable initiaux.

https://doc.pcsoft.fr/fr-FR/?3013066
Remarque : La sérialisation en mode psdXMLAgrégé permet de générer rapidement un fichier XML dans un format classique, utilisé pour des échanges avec d'autres systèmes. La désérialisation en mode psdXMLAgrégé est disponible, cependant les éléments WLangage (variants, tableaux, classes dérivées, ...) ne seront pas les mêmes que ceux d'origine.
Publicado el 20,abril 2020 - 13:07
Bonjour Benjamin,

J'ai testé, tu as raison le problème venait de là.
Je ne sais pas pourquoi je m'entêtai à penser que le problème venait de mes classes.

Merci beaucoup pour votre aide,

Julien