2009-03-02 4 views
1

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

Я знаю, что можно преобразовать объекты в формат 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; 
} 

ответ

1

Попробуйте на основе serialization пакет JSON в ascorelib.

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

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

Функция «eval» в Perl аналогична функции, которую я ищу, без сохранения кода, конечно.

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

+0

благодарит за отзыв! Просто, чтобы убедиться, что я понимаю: если я конвертирую HBox (из примера) в XML и сохраняю его на сервере, я могу получить XML и восстановить HBox (и всех детей) в качестве объекта без разбора или выполнения какого-либо ручного объекта создание? – bedwyr

+1

Нет, вы не можете просто преобразовать HBox в XML. Для этого вам придется реализовать функцию. Я имел в виду, что обработка XML безболезненна в AS3. – dirkgently

+0

Ах, я вижу. Спасибо за вашу помощь. – bedwyr

4

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