PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Désérialisation
  • Rapidité
  • Limites
WinDevWebDev - Code ServeurWebDev - Code NavigateurWinDev MobileEtats et RequêtesWindowsLinuxWindows MobileWindows PhoneWindows Store appsAndroidWidget AndroidiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)Langage ExterneHFSQLHFSQL Client/ServeurProcédures stockéesHyper File 5.5OLE DBODBCAccès Natifs
Désérialise (Fonction)
En anglais : Deserialize

Désérialise un buffer ou une chaîne de caractères contenant les données d'une classe, d'une structure, d'un tableau (y compris un tableau associatif), d'une file, d'une pile ou une variable d'un type avancé (par exemple gglAgenda) et leurs sous-éléments.

Versions 15 et supérieures
Java Cette fonction est désormais disponible pour les applications Java.
PHP Cette fonction est désormais disponible pour les sites PHP.
WinDev MobileAndroid Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Java Cette fonction est désormais disponible pour les applications Java.
PHP Cette fonction est désormais disponible pour les sites PHP.
WinDev MobileAndroid Cette fonction est désormais disponible pour les applications Android.
Java Cette fonction est désormais disponible pour les applications Java.
PHP Cette fonction est désormais disponible pour les sites PHP.
WinDev MobileAndroid Cette fonction est désormais disponible pour les applications Android.
Versions 17 et supérieures
WinDev MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
WinDev MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
WinDev MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
WinDev MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WinDevWinDev MobileWindows Store apps Cette fonction est désormais disponible en mode Windows Store apps.
Nouveauté 18
WinDev MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WinDevWinDev MobileWindows Store apps Cette fonction est désormais disponible en mode Windows Store apps.
WinDev MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WinDevWinDev MobileWindows Store apps Cette fonction est désormais disponible en mode Windows Store apps.
Exemple
// Cet exemple montre l'utilisation des fonctions Sérialise/Désérialise
// avec une variable de type Tableau.
// Ces fonctions peuvent utiliser tous les types de variables WLangage.


MonTableau est un tableau de chaînes
bufRésultat est un Buffer

// Ajoute des éléments dans le tableau
Ajoute(MonTableau, "WINDEV")
Ajoute(MonTableau, "WEVDEV")
Ajoute(MonTableau, "WINDEV MOBILE")

// Sérialisation du tableau dans le buffer en JSON
// => Sauvegarde du tableau et de tout son contenu dans une chaîne JSON
Sérialise(MonTableau, bufRésultat, psdJSON)

// Désérialisation du buffer JSON
// => Reconstruction du tableau WLangage à partir de la chaîne JSON
MonTableauReconstruit est un tableau de chaînes
Désérialise(MonTableauReconstruit, bufRésultat, psdJSON)

Syntaxe
Désérialise(<Variable> , <Buffer> , <Paramètres>)
<Variable> : Type de la variable
Variable de type structure, classe, tableau, file ou pile.
  • Dans le cas d'une structure ou d'une classe, cette variable doit être allouée.
  • Dans le cas d'un tableau, d'une file ou d'une pile, cette variable est automatiquement allouée lors de la désérialisation.
La désérialisation sera effectuée dans cette variable.
<Buffer> : Chaîne de caractères Ansi ou buffer
Variable qui contient les données sérialisées. Il est nécessaire d'indiquer un nom de variable.
<Paramètres> : Constante de type Entier
Type de désérialisation (doit correspondre au type choisi pour la sérialisation) :
psdBinaireDésérialisation binaire.
AndroidWidget AndroidJavaPHP La désérialisation binaire n'est pas disponible.
Versions 17 et supérieures
psdBinaireFormat16
Nouveauté 17
psdBinaireFormat16
psdBinaireFormat16
Désérialisation binaire au format compatible 16.

Ce format doit être utilisé si une application en version 17 doit fournir des données à une application en version 16.
Ce format ne doit pas être utilisé en mode Unicode.

AndroidWidget AndroidJavaPHP La désérialisation binaire n'est pas disponible.
Versions 19 et supérieures
psdJSON
Nouveauté 19
psdJSON
psdJSON
Désérialisation au format JSON.

AndroidWidget AndroidJava La désérialisation au format JSON n'est pas disponible.
Java La désérialisation au format JSON n'est pas disponible.
Versions 20 et supérieures
AndroidWidget Android La sérialisation JSON est désormais disponible.
Nouveauté 20
AndroidWidget Android La sérialisation JSON est désormais disponible.
AndroidWidget Android La sérialisation JSON est désormais disponible.
psdXMLDésérialisation XML avec référence aux sous-objets.

Rappel : Ce type de sérialisation/désérialisation permet d'utiliser le format XML comme moyen de stockage et d'échange entre des applications écrites en WLangage.

Versions 20 et supérieures
psdXMLAgrégé
Nouveauté 20
psdXMLAgrégé
psdXMLAgrégé
Désérialisation XML avec agrégation directe des sous-objets.

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.

AndroidWidget AndroidJavaPHP Ce mode de désérialisation n'est pas disponible.

Remarques

Désérialisation

La désérialisation d'un tableau, d'une file ou d'une pile supprime le contenu de l'élément.

S'il y a des membres en plus dans la structure ou dans la classe :

  • si on désérialise une structure ou une classe : les membres supplémentaires conservent leurs valeurs d'avant la désérialisation.
  • si on désérialise un tableau de structure ou de classe : les membres supplémentaires prennent la valeur par défaut du type du membre.
S'il y a des membres en plus dans le buffer sérialisé, ils ne sont pas pris en compte lors de la désérialisation.

Pour désérialiser un tableau dynamique sans type, il est nécessaire d'allouer préalablement ce tableau.

Pour désérialiser une classe ou une structure contenant un tableau dynamique sans type, il est nécessaire d'allouer préalablement ce tableau.

La désérialisation XML nécessite la librairie wdxxxxml.dll ou wpxxxxml.dll.

Une variable de type avancé qui a été sérialisé avec un produit anglais (et dont les noms des propriétés sont en anglais dans le buffer de sérialisation) peut être désérialisée avec un produit français (et réciproquement).

Dans les variables de type avancé :

  • les propriétés en lecture seule ne sont généralement pas désérialisables.
  • les propriétés en écriture seule ne sont généralement pas sérialisables.
Les cas particuliers sont indiqués dans la documentation de chaque type.

AndroidWidget AndroidJava Pour que le format de sérialisation soit compatible entre des applications WinDev et des applications WinDev Java, les noms des éléments sérialisés suivants ne doivent pas contenir des caractères spéciaux ou des caractères accentués :
  • classes,
  • tableaux de classes,
  • structures,
  • tableau de structures.

Rapidité

La désérialisation binaire est plus rapide que la désérialisation XML.

Limites

  • Les tableaux fixes et les tableaux associatifs de structures locales ne peuvent pas être désérialisés.
  • Les membres globaux des classes ne sont pas sérialisés/désérialisés.
  • La sérialisation/désérialisation XML d'un tableau de structures avec un membre chaîne contenant un "\0" ou Caract(0) renvoie l'erreur "Format de sérialisation incorrect". Il est nécessaire de faire une sérialisation/désérialisation binaire dans ce cas.
  • Il n'est pas possible de sérialiser/désérialiser un tableau de classe ou de structure si cette classe ou cette structure contient un tableau dynamique sans type. Il est nécessaire d'utiliser un tableau dynamique typé dans cette classe ou cette structure.
  • Pour sérialiser/désérialiser une classe, il est nécessaire d'avoir un constructeur sans paramètres obligatoires.
  • Versions 20 et supérieures
    Limites en mode psdXMLAgrégé : la sérialisation/désérialisation de variables de types avancés provoque une erreur à l'exécution. Les propriétés des variables de types avancés ne sont pas sérialisées.
    Nouveauté 20
    Limites en mode psdXMLAgrégé : la sérialisation/désérialisation de variables de types avancés provoque une erreur à l'exécution. Les propriétés des variables de types avancés ne sont pas sérialisées.
    Limites en mode psdXMLAgrégé : la sérialisation/désérialisation de variables de types avancés provoque une erreur à l'exécution. Les propriétés des variables de types avancés ne sont pas sérialisées.
Liste des exemples associés :
Sérialise/Désérialise Exemple unitaire (WebDev) : Sérialise/Désérialise
[ + ] Utilisation des fonctions de Sérialisation/Désérialisation

Cet exemple didactique montre utiliser les fonctions WLangage Sérialise et Désérialise.
La sérialisation consiste à sauvegarder une variable, un objet, une structure, un tableau ou tout autre élément dans un buffer.
Ce buffer peut ensuite être sauvegardé sur disque ou envoyé par socket. Cela permet la persistance des objets.
La fonction Désérialise permet de reconstruire un objet, un tableau ou une structure à partir d'un buffer.
Fonctions Sérialise/Désérialise Exemple unitaire (WinDev) : Fonctions Sérialise/Désérialise
[ + ] Utilisation des fonctions de Sérialisation/Désérialisation

Cet exemple didactique montre utiliser les fonctions WLangage Sérialise et Désérialise.
La sérialisation consiste à sauvegarder une variable, un objet, une structure, un tableau ou tout autre élément dans un buffer. Ce buffer peut être ensuite sauvegardé sur disque ou envoyé par socket. Cela permet la persistance des objets.
La fonction Désérialise permet de reconstruire un objet, un tableau ou une structure à partir d'un buffer.

Composantes
WinDevWebDev - Code ServeurEtats et Requêtes wd200vm.dll
Windows Mobile wp200vm.dll
Java wd200java.jar
Linux wd200vm.so
Android wd200android.jar
Version minimum requise
  • Version 10
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire