Actionscript 序列化Flex对象以保存/恢复应用程序状态

Actionscript 序列化Flex对象以保存/恢复应用程序状态,actionscript,flex3,Actionscript,Flex3,是否可以序列化Flex中的对象层次结构,将二进制数据发送到URL以便在服务器上存储/检索,并反序列化数据以恢复对象的原始状态 我知道可以将对象转换为XML格式(还没有尝试),但我希望避免解析XML和手动重建对象。如果有能够将对象序列化/反序列化为简单二进制格式的功能就好了(我过去在Java中也做过类似的事情,尽管不像我希望的那么容易)。Perl中的“eval”函数与我正在寻找的类似,当然是sans保存代码 在伪代码中,我想做以下几点: private var contentToSave:HBox

是否可以序列化Flex中的对象层次结构,将二进制数据发送到URL以便在服务器上存储/检索,并反序列化数据以恢复对象的原始状态

我知道可以将对象转换为XML格式(还没有尝试),但我希望避免解析XML和手动重建对象。如果有能够将对象序列化/反序列化为简单二进制格式的功能就好了(我过去在Java中也做过类似的事情,尽管不像我希望的那么容易)。Perl中的“eval”函数与我正在寻找的类似,当然是sans保存代码

在伪代码中,我想做以下几点:

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的
序列化

[…]但我希望避免解析XML和手动重建对象

AS处理XML就像处理任何其他本机类型一样。放心。XML是处理要从服务器上提取并放回服务器上的数据的首选方法。当然,
ascorelib
为您提供了一个JSON类——因此您可能还想看看这个类

Perl中的“eval”函数与我正在寻找的类似,当然是sans保存代码


IIRC,
eval
是ECMAScript规范的一部分(您可以在Javascript中找到它)。但不是在AS3.0中。在以前的一些版本中,它在某种程度上已经存在,但不再受支持。

请尝试中基于JSON的
序列化

[…]但我希望避免解析XML和手动重建对象

AS处理XML就像处理任何其他本机类型一样。放心。XML是处理要从服务器上提取并放回服务器上的数据的首选方法。当然,
ascorelib
为您提供了一个JSON类——因此您可能还想看看这个类

Perl中的“eval”函数与我正在寻找的类似,当然是sans保存代码


IIRC,
eval
是ECMAScript规范的一部分(您可以在Javascript中找到它)。但不是在AS3.0中。在以前的一些版本中,它在某种程度上已经存在,但不再受支持。

请查看。它以AMF格式将传递的对象保存到字节数组中。我没有太多地使用这个函数,我不知道它可以序列化什么类型的对象,但肯定不是全部。

看一看。它以AMF格式将传递的对象保存到字节数组中。我没有太多地使用这个函数,我不知道它可以序列化什么类型的对象,但肯定不是全部。

感谢您的回复!为了确保我理解:如果我将HBox(来自示例)转换为XML并将其保存在服务器上,我可以检索XML并将HBox(以及所有子项)还原为对象,而无需解析或手动创建对象?不,您不能仅将HBox转换为XML。您必须为此实现一个函数。我的意思是XML处理在AS3中是无痛的。啊,我明白了。谢谢你的帮助。看起来ascorelib中的JSON库正是我想要的。再次感谢!谢谢你的回复!为了确保我理解:如果我将HBox(来自示例)转换为XML并将其保存在服务器上,我可以检索XML并将HBox(以及所有子项)还原为对象,而无需解析或手动创建对象?不,您不能仅将HBox转换为XML。您必须为此实现一个函数。我的意思是XML处理在AS3中是无痛的。啊,我明白了。谢谢你的帮助。看起来ascorelib中的JSON库正是我想要的。再次感谢!