AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Administrar bases de datos / HFSQL / Arquitectura de 3 niveles / Funciones WLanguage
  • Deserialización
  • Velocidad
  • Limitaciones
WINDEV
WindowsLinuxJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac Catalyst
Otros
Procedimientos almacenados
Deserializa un búfer o una cadena de caracteres que contiene los datos de una clase, estructura, array (incluyendo un array asociativo), cola, pila, lista o variable avanzada (por ejemplo gglCalendar), así como sus subelementos.
Ejemplo
// This example explains how to use the Serialize/Deserialize functions
// with an Array variable. 
// These functions can use all types of WLanguage variables.

MyArray is array of strings
bufResult is Buffer

// Adds elements into the array
Add(MyArray, "WINDEV")
Add(MyArray, "WEBDEV")
Add(MyArray, "WINDEV MOBILE")

// Serialize the array in the buffer in JSON
// => Save the array and its entire content in a JSON string
Serialize(MyArray, bufResult, psdJSON)

// Deserialize the JSON buffer
// => Rebuild the WLanguage array from the JSON string
MyRebuiltArray is array of strings
Deserialize(MyRebuiltArray, bufResult, psdJSON)
Sintaxis
Deserialize(<Variable> , <Buffer> , <Parameters>)
<Variable>: Tipo de variable
Variable de tipo Structure, Class, Array, Queue, List o Stack.
  • Para una estructura o clase, se debe asignar un valor a esta variable.
  • Para un array, cola, lista o pila, un valor se asigna automáticamente a esta variable durante la deserialización.
El resultado de la deserialización se asignará a esta variable.
<Buffer>: Cadena ANSI o Búfer
Variable que contiene los datos serializados. Se debe especificar un nombre de variable.
<Parameters>: Constante de tipo Integer
Tipo de deserialización (debe corresponder al tipo elegido para la serialización):
psdBinaryDeserialización binaria.
New in SaaS
Ahora es posible deserializar un miembro o variable JSON en formato binario.
Nota: Esta funcionalidad solo está disponible a partir de WINDEV Suite SaaS 2025 - Update 2. Para obtener más información, consulte Utilizar las novedades exclusivas de WINDEV Suite SaaS 2025.
Java La deserialización binaria no está disponible.
psdBinaryFormat16Deserialización binaria compatible con la versión 16.
Este formato debe utilizarse si una aplicación de la versión 17 o posterior debe compartir datos con una aplicación de la versión 16 o anterior.
Este formato no debe utilizarse en modo Unicode.
Java La deserialización binaria no está disponible.
psdJSONDeserialización en formato JSON.
Java La deserialización JSON no está disponible.
psdXMLDeserialización XML con referencia a subobjetos.
Recordatorio: Este tipo de serialización/deserialización permite utilizar XML para almacenar e intercambiar datos en aplicaciones escritas en WLanguage.
psdXMLAggregatedDeserialización XML con agregación directa de subobjetos.
Nota: La serialización en modo psdXMLAggregated permite generar fácilmente un archivo XML estándar para intercambiar datos con otros sistemas. La deserialización en modo psdXMLAggregated está disponible. Sin embargo, los elementos WLanguage (variants, arrays, clases derivadas, etc.) serán diferentes de los elementos de origen.
Java Este modo de deserialización no está disponible.
Novedad versión 2025
psdXMLArrayRepeatedElements
Modo de deserialización XML para manipular arrays como una secuencia de elementos.
Nota: Esta constante debe combinarse con la constante psdXMLAggregated.
Java Este modo de serialización no está disponible.
Nota: Esta constante solo está disponible a partir de la versión 2025 - Update 1.
Observaciones

Deserialización

La deserialización de una variable de tipo Array, Queue o Stack elimina el contenido del elemento.
Si hay miembros adicionales en la estructura o clase:
  • si se deserializa una estructura o clase, los miembros adicionales conservan sus valores anteriores a la deserialización.
  • si se deserializa un array de estructuras o clases, los miembros adicionales toman el valor predeterminado del tipo de miembro.
Si hay miembros adicionales en el búfer serializado, se ignoran durante la deserialización.
Para deserializar un array dinámico no tipado, primero es necesario asignarle memoria
Para deserializar una clase o estructura que contiene un array dinámico no tipado, primero es necesario asignarle memoria.
La biblioteca wd300xml.dll o wp300xml.dll es necesaria para deserializar un documento XML.
Una variable avanzada que se serializó con una versión en francés del producto (y cuyos nombres y propiedades están en francés en el búfer de serialización) puede ser deserializada por una versión en inglés y viceversa.
En las variables avanzadas:
  • Las propiedades de solo lectura no suelen ser deserializables.
  • Las propiedades de solo escritura no suelen ser serializables.
Los casos especiales se especifican en la documentación de cada tipo.
Java Para que el formato de serialización sea compatible entre aplicaciones WINDEV y aplicaciones WINDEV para Java, los nombres de los siguientes elementos serializados no deben contener caracteres especiales o acentos:
  • clases,
  • arrays de clases,
  • estructuras,
  • array de estructuras.

Velocidad

La deserialización binaria es más rápida que la deserialización XML.

Limitaciones

  • Los arrays fijos y asociativos de estructuras locales no pueden deserializarse.
  • Los miembros globales de las clases no se serializan/deserializan.
  • La serialización/deserialización XML de un array de estructuras con un miembro de cadenas que contiene "\0" o Charact(0) devuelve el siguiente error: "Formato de serialización incorrecto". En este caso, se requiere una serialización/deserialización binaria.
  • No se puede serializar/deserializar un array de clases o estructuras si contienen un array dinámico no tipado. Es necesario utilizar un array dinámico tipado en la clase o estructura.
  • Para serializar/deserializar una clase, necesita un constructor sin parámetros obligatorios.
  • Java No se pueden serializar/deserializar variables de tipo Queue, Stack o List.
  • Solo la serialización JSON está disponible para variables de tipo Record. No es posible la deserialización.
  • Gestión de errores: La función Deserialize no devuelve códigos de error. Si se produce un error, la variable ErrorOccurred se establece en True.
Clasificación Lógica de negocio / UI: Código neutro
Componente: wd300vm.dll
Versión mínima requerida
  • Versión 10
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/05/2025

Señalar un error o enviar una sugerencia | Ayuda local