Сериализуйте объекты Flex для сохранения / восстановления состояния приложения

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Можно ли сериализовать иерархию объектов в Flex, отправить двоичные данные по URL-адресу для хранения / извлечения на сервере / с сервера и десериализовать данные для восстановления исходного состояния объектов?

Я знаю, что можно преобразовать объекты в формат XML (еще не пробовал), но я надеюсь избежать синтаксического анализа XML и перестройки объектов вручную.Было бы неплохо иметь функциональность, которая может сериализовать / десериализовать объекты в простой двоичный формат (в прошлом я делал нечто подобное на Java, хотя и не так легко, как хотелось бы).Функция 'eval' в Perl похожа на то, что я ищу, без сохранения кода, конечно.

В псевдокоде вот что я хотел бы сделать:

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;
}
Это было полезно?

Решение

Попробуйте использовать JSON на основе serialization упаковка в аскорэлиб.

[...] но я надеюсь избежать синтаксического анализа XML и перестройки объектов вручную

AS обрабатывает XML точно так же, как и любой другой собственный тип.Будьте уверены.XML - это предпочтительный способ работы с данными, которые вы будете извлекать и возвращать обратно на сервер.Конечно, в ascorelib предоставляет вам класс JSON, так что вы, возможно, захотите взглянуть и на это.

Функция 'eval' в Perl похожа на то, что я ищу, без сохранения кода, конечно.

IIRC, eval является частью спецификации ECMAScript (и вы найдете ее в Javascript).Но не в AS3.0.В определенной степени это было в некоторых предыдущих версиях?), Но больше не поддерживается.

Другие советы

Взгляните на ByteArray.writeObject().который сохраняет переданный объект в формате AMF в массив байтов.Я не слишком часто пользовался этой функцией, я точно не знаю, какие объекты она может сериализовать, но определенно не все.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top