|
|
|
|
|
- Deserialización
- Actualización de la versión 10: serialización XML para aplicaciones móviles
- Velocidad
- Serialización de los miembros de clases y estructuras
- Nombre de serialización de las clases
- Opciones disponibles para serializar arrays en XML
- Limitaciones
Transforma los siguientes elementos en un formato específico: - una estructura (y sus subelementos).
- una clase (y sus subelementos).
- un array (incluidos los arrays asociativos).
- una cola.
- un apilamiento.
- una lista.
- un tipo avanzado de variable (gglCalendar por ejemplo).
Los formatos disponibles son XML, binario y JSON. A continuación, el formato inicial puede recuperarse mediante Deserializar. Novedad versión 2025
MyArray is array of strings
bufResult is Buffer
Add(MyArray, "WINDEV")
Add(MyArray, "WEBDEV")
Add(MyArray, "WINDEV MOBILE")
Serialize(MyArray, bufResult, psdJSON)
MyRebuiltArray is array of strings
Deserialize(MyRebuiltArray, bufResult, psdJSON)
Sintaxis
Serialize(<Variable> , <Buffer> , <Parameters> [, <Root name>])
<Variable>: Tipo de variable Variable a serializar. Esta variable es una estructura, una clase, un array, una cola, una lista o un apilamiento. <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: | | psdBinary | Serialización binaria. New in SaaSAhora es posible serializar una variable miembro o JSON en formato binario.. Nota: Esta funcionalidad solo está disponible a partir de WINDEV Suite SaaS 2025 - Update 2. | psdBinaryFormat16 | Serializació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. | psdJSON | Serialización JSON. La codificación utilizada corresponde al estándar JSON: - Codificación ASCII de 7 bits, es decir, los 128 primeros caracteres sin acento,
- Codificación JSON para otros caracteres: "\u" seguido del código del carácter en formato hexadecimal de 4 bytes. Por ejemplo, el carácter "é" (código ASCII 233, código hexadecimal E9) se codificaría como "\u00E9".
| psdMinified | Nota: Esta constante debe utilizarse en combinación con la constante psdJSON constante. En caso contrario, se ignorará. La codificación utilizada corresponde al estándar JSON. Esta constante se utiliza para generar un JSON eliminando los espacios innecesarios (retornos de carro, caracteres de espaciado, etc.). | psdFormatting | Serialización en formato JSON o XML con retorno de carro y sangría. La codificación utilizada corresponde al estándar JSON o XML. Nota: Esta constante debe utilizarse en combinación con el método psdJSON o psdXML constante. | psdXML | Serialización XML con referencia a subobjetos. Este tipo de serialización permite utilizar el formato XML como medio de almacenamiento e intercambio entre aplicaciones escritas en WLanguage. | psdXMLAggregated | Serialización XML con agregación directa de subobjetos. Este tipo de serialización permite generar fácilmente un archivo XML en un formato estándar para realizar intercambios con otros sistemas. Nota psdXMLAggregated está disponible. Sin embargo, los elementos WLanguage (variantes, arrays, clases derivadas, etc.) serán diferentes de los elementos originales. | Novedad versión 2025psdXMLArrayRepeatedElements | Modo de serialización XML para manejar arrays como una secuencia de elementos. Nota: Esta constante solo está disponible a partir de la versión 2025 - Update 1. |
<Root name>: Cadena de caracteres Nombre de la raíz del XML generado. Este parámetro se tiene en cuenta en psdXMLAggregated únicamente. Si no se especifica este parámetro, el nombre de la raíz es "DOCUMENTO". Observaciones Deserialización La deserialización de un array, cola, lista o apilamiento borra el contenido de este elemento. Si hay miembros adicionales en la estructura o en la clase: - si se deserializa una estructura o una clase, los miembros adicionales conservan sus valores de antes de la deserialización.
- si se deserializa un array de estructuras o clases, los miembros adicionales toman el valor por defecto del tipo de miembro.
Si hay miembros adicionales en el buffer serializado, se ignoran durante la deserialización. Para deserializar un array dinámico no tipado, es necesario asignarlo previamente. Para deserializar una clase o una estructura que contenga un array dinámico no tipado, es necesario asignar previamente este array. La biblioteca wd300xml.dll o wp300xml.dll es necesaria para deserializar un documento XML. Actualización de la versión 10: serialización XML para aplicaciones móviles Hasta la versión 100050, el psdXML no generaba un archivo XML válido. El formato generado produjo problemas en los dispositivos móviles. Este problema fue solucionado. Un archivo XML creado con una versión posterior a la versión 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 clases y estructuras Por defecto, todos los miembros de una clase o estructura se serializan. Tiene la posibilidad 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 puede realizarse durante una serialización binaria.
 Funcionalidad no disponible.
Esta gestión de la serialización se realiza mediante 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 psdXMLAggregated únicamente.
Ejemplo para una clase: Cl is Class
MembreSérialisé is int
MembreNonSérialisé is string, serialize = false
MembreRenommé is int, serialize = "NouveauNomMembre"
END
Nota: Para evitar serializar un miembro de un array, utilice la siguiente sintaxis: t is array <Serialize = False> of int t2 is array <Serialize = "<serialization name>"> of int Nombre de serialización de las clases El atributo de extensión "Serialize" está disponible para las clases con el fin de especificar el nombre de serialización. Se utiliza la siguiente sintaxis: <Class name> is Class [, Serialize = <New name>] Ejemplo: CTest is Class, serialize = "Test"
m_sNom is string, serialize = "Nom"
m_sPrenom is string, serialize = "Prenom"
m_sSuitePrenom is string, serialize = "SuitePrenom"
END
sXML is Buffer
monTest is CTest
monTest.m_sNom = "Mon Nom"
monTest.m_sPrenom = "Mon Prénom"
monTest.m_sSuitePrenom = "Mon Prénom Mon Prénom"
Serialize(monTest, sXML, psdXMLAggregated)
Opciones disponibles para serializar arrays en XML - Declara el array:
LaStructure is Structure
LeTableau is array of int
END
la_variable is LaStructure
la_variable.LeTableau = [1, 2, 3]
- Serialización con psdXML constante:
Serialize(la_variable, le_XML, psdXML)
Resultado:
<?xml version="1.0"?> <DOCUMENT xmlns:SOAP_ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <TheStructure id="id0"> <TheArray SOAP_ENC:arrayType="TheArray[3]"> <item>1</item> <item>2</item> <item>3</item> </TheArray> </TheStructure> </DOCUMENT> - Serialización con psdXMLAggregated constante:
Serialize(la_variable, le_XML_agrégé, psdXMLAggregated)
Resultado:
<?xml version="1.0"?> <TheStructure> <TheArray> <item>1</item> <item>2</item> <item>3</item> </TheArray> </TheStructure> Novedad versión 2025Serialización con psdXMLAggrated y psdXMLArrayRepeatedElements constantes: Serialize(la_variable, le_XML_avec_éléments_tableau_répétés,
psdXMLAggregated + psdXMLArrayRepeatedElements)
Resultado: <?xml version="1.0"?> <TheStructure> <TheArray>1</TheArray> <TheArray>2</TheArray> <TheArray>3</TheArray> </TheStructure> Nota: Esta sintaxis solo está disponible a partir de la versión 2025 - Update 1.
Clasificación Lógica de negocio / UI: Código neutro
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|