Serializar objetos flexibles para guardar / restaurar el estado de la aplicación

StackOverflow https://stackoverflow.com/questions/603890

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Es posible serializar una jerarquía de objetos en Flex, enviar los datos binarios a una URL para almacenamiento / recuperación en / desde un servidor y deserializar los datos para restaurar el estado original de los objetos?

Sé que es posible convertir los objetos a un formato XML (aún no lo he probado), pero espero evitar analizar XML y reconstruir los objetos manualmente. Sería bueno tener una funcionalidad que pueda serializar / deserializar objetos a un formato binario simple (hice algo similar en el pasado en Java, aunque no tan fácilmente como me hubiera gustado). La función 'evaluar' en Perl es similar a lo que estoy buscando, sin guardar el código, por supuesto.

En pseudocódigo, esto es lo que me gustaría hacer:

private var contentToSave:HBox = new HBox();

private function saveState(event:Event):void {
    var toSave:HBox = this.contentToSave;
    var data:? = /* serialize 'toSave' ActionScript classes to binary data*/;
    sendDataToServer(data, filename);
}
private function restoreState(filename):void {
    var data:? = getDataFromServer(filename);
    var savedData:HBox = /* deserialize binary 'data' to ActionScript classes */;
    this.contentToSave = savedData;
}
¿Fue útil?

Solución

Pruebe el paquete de serialización basado en JSON en ascorelib .

  

[...] pero espero evitar analizar XML y reconstruir los objetos manualmente

AS maneja XML como cualquier otro tipo nativo. Está seguro. XML es la forma preferida de manejar los datos que va a extraer y volver a colocar en un servidor. Por supuesto, el ascorelib le ofrece una clase JSON, por lo que es posible que desee ver eso también.

  

La función 'eval' en Perl es similar a lo que estoy buscando, sin guardar el código, por supuesto.

IIRC, eval es parte de la especificación ECMAScript (y lo encontrará en Javascript). Pero no en AS3.0. Estuvo allí hasta cierto punto en algunas versiones anteriores (s) pero ya no es compatible.

Otros consejos

Eche un vistazo a ByteArray .writeObject () . que guarda el objeto pasado en formato AMF en la matriz de bytes. No he usado demasiado esta función, no sé exactamente qué tipo de objetos puede serializar, pero definitivamente no todos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top