AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Administrar bases de datos / HFSQL / Gestión de la arquitectura de 3 niveles / Funciones WLanguage
  • Deserialización
  • Cambio de comportamiento en la versión 10: generando una serialización XML para los dispositivos móviles
  • Velocidad
  • Serialización de los miembros de las clases y estructuras
  • Serialización nombre de las clases
  • Límites
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Transforma los siguientes elementos en un formato específico:
  • una estructura (y sus subelementos).
  • una clase (y sus subelementos).
  • una array (incluyendo la arrays asociativa).
  • con una cola.
  • una pila.
  • una lista.
  • un tipo avanzado de variable (gglCalendario por ejemplo).
Los formatos disponibles son XML, binario y JSON. Entonces, el formato inicial puede ser recuperado por Deserialize.
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
Serialize(<Variable> , <Buffer> , <Parameters> [, <Root name>])
<Variable>: Tipo de variable
Variable para serializar. Esta variable es una estructura, una clase, una array, una cola, una lista o una pila.
<Buffer>: Cadena de caracteres Ansi o buffer
Variable que contiene el resultado de la serialización.
<Parameters>: Constante de tipo Integer
Tipo de serialización:
psdBinarioSerialización binaria.
psdBinarioFormato16Serialización binaria en 16 formatos compatibles.
Este formato debe utilizarse si una aplicación de la versión 17 debe proporcionar datos a una aplicación de la versión 16 o anterior..
Este formato no debe utilizarse en modo Unicode.
psdJSONSerialización en formato JSON.
La codificación utilizada corresponde al estándar JSON:
  • utilizando una codificación en ASCII de 7 bits, lo que significa los primeros 128 caracteres, los caracteres no acentuados,
  • usando una codificación JSON de otros caracteres: " ASLASH_ u" seguido del código de carácter en hexadecimal el 4. Ejemplo: para "é" (código ASCII 233, código hexadecimal E9), la codificación corresponde a "\u00E9".
psdMinifiedSerialización en formato JSON.
La codificación utilizada corresponde al estándar JSON. Esta constante se utiliza para generar un JSON eliminando los espacios innecesarios (retornos de carro, espaciado de caracteres, etc.).
psdFormattingSerialización en formato JSON o XML con retorno de carro y sangrado.
La codificación utilizada corresponde al estándar JSON o XML.
Atención: Esta constante debe combinarse con la constante psdJSON o psdXML.
psdXMLSerialización XML con referencia a objetos parciales. Este tipo de serialización permite utilizar el formato XML como modos de almacenamiento e intercambio entre aplicaciones escritas en WLanguage..
psdXMGregadoSerialización XML con agregación directa de subobjetos. El tipo de serialización permite generar fácilmente un archivo XML en formato estándar, utilizado para realizar intercambios con otros sistemas..
Observación: Una deserialización en modo psdXMLAggregated está disponible, sin embargo los elementos WLanguage (variantes, arrays, clases derivadas,...) serán diferentes de los elementos fuente.
<Root name>: Cadena de caracteres (con comillas)
Nombre de la raíz del XML generado. Este parámetro se tiene en cuenta en psdXMGregado sólo en modo.
Si no se especifica este parámetro, el nombre de la raíz es "DOCUMENT"..
Observaciones

Deserialización

La deserialización de una array, cola, lista o pila elimina el contenido de este elemento.
Si se encuentran miembros adicionales en la estructura o en la clase:
  • si una estructura o una clase se deserializa: los miembros adicionales mantienen el valor que tenían antes de la deserialización.
  • si se deserializa un array de estructura o clase: los miembros adicionales toman el valor por defecto del tipo de miembro.
Si se encuentran barras adicionales en el búfer serializado, se ignoran durante la deserialización.
Para deserializar una array dinámica no tipada, esta array debe ser asignada de antemano.
Para deserializar una clase o una estructura que contiene una array dinámica no tipada, esta array debe ser asignada de antemano.
La deserialización XML requiere la biblioteca wdxxxxxxml.dll o wpxxxxxxml.dll.

Cambio de comportamiento en la versión 10: generando una serialización XML para los dispositivos móviles

Hasta la versión 100050, el uso de la constante psdXML no generaba un archivo XML válido.. El formato generado causó un problema en los dispositivos móviles. Este problema fue solucionado.
Un archivo XML creado con una versión posterior a la 100050 no puede ser leído por un programa compilado con una versión anterior.. Para conservar el modo de funcionamiento de la versión 100050, solo debe utilizar la constante psdXML_OldFormat.

Velocidad

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

Serialización de los miembros de las clases y estructuras

Por defecto, todos los miembros de una clase o estructura están serializados..
Tiene la capacidad de gestionar con precisión la serialización de cada miembro.:
  • indicando el miembro que se serializará al llamar a la función Serializar.
    Esta operación se puede realizar en todos los tipos de serialización (XML, JSON, binario)..
  • cambiando el nombre del miembro durante la serialización con Serializar.
    Esta operación sólo se puede realizar durante una serialización binaria..
Esta gestión de serialización se realiza utilizando la siguiente sintaxis:
  • Serialización (o no) de un miembro :
    <Member name> is <Member type> [, Serialize = <True/False>] [, xmlAttribute]
  • Serialización y cambio de nombre de miembro:
    <Member name> is <Member type> [, Serialize = <New name>] [, xmlAttribute]
El atributo de extensión "xmlAttribute" se utiliza para especificar que el miembro se crea como atributo (en lugar de etiqueta). Este atributo se tiene en cuenta durante un psdXMGregado serialización solamente.
Ejemplo de una clase:
Cl is Class
// Serialized member
SerializedMember is int
// Non-serialized member
NonSerializedMember is string, Serialize = False  
// Member renamed during the serialization
RenamedMember is int, Serialize = "NewMemberName"
END
Observación: Para evitar serializar un miembro de array, utilice la siguiente sintaxis:
t is array <Serialize = False> of int
t2 is array <Serialize = "<serialization name>"> of int

Serialización nombre de las clases

El atributo de extensión "Serialize" está disponible para las clases con el fin de especificar el nombre de la serialización..
Se utiliza la siguiente sintaxis:
<Class name> is Class [, Serialize = <New name>]

Límites

  • La arrays fija y la arrays asociativa de las estructuras locales no pueden ser serializadas.
  • Los miembros globales de las clases no están serializados.
  • La serialización/deserialización XML de una array de estructuras con un miembro de cadena que contiene "\0" o Charact(0) devuelve el siguiente error: "Formato de serialización incorrecto". En este caso, se debe realizar una serialización/deserialización binaria.
  • No se puede serializar/deserializar una array de clases o estructuras si esta clase o estructura contiene una array dinámica sin la clase. En esta clase o en esta estructura se debe utilizar una array dinámica con una clase definida.
  • Para serializar/deserializar una clase, debe tener un constructor con el parámetro 0.
  • pilas, colas, listas:
    • La serialización JSON de pilas, colas y listas no está disponible..
  • Sólo la serialización JSON está disponible para las variables de Registro. No es posible la deserialización.
Clasificación Lógica de negocio / UI: Código neutro
Componente: wd290vm.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: 27/05/2022

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