|
|
|
|
|
- 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
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.
// 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: | | psdBinario | Serialización binaria.
| psdBinarioFormato16 | Serializació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. | psdJSON | Serializació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".
| psdMinified | Serializació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.). | psdFormatting | Serializació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. | psdXML | Serializació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.. | psdXMGregado | Serializació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).. Funcionalidad no disponible. - cambiando el nombre del miembro durante la serialización con Serializar.
Esta operación sólo se puede realizar durante una serialización binaria.. Funcionalidad no disponible.
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>] Clasificación Lógica de negocio / UI: Código neutro
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|