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

我知道可以将对象转换为XML格式(尚未尝试过),但我希望避免解析XML并手动重建对象。拥有可以将对象序列化/反序列化为简单二进制格式的功能会很棒(我在Java中做过类似的事情,虽然不像我想的那么容易)。 Perl中的'eval'函数与我正在寻找的类似,当然也没有保存代码。

在伪代码中,这就是我想要做的事情:

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;
}
有帮助吗?

解决方案

序列化包/ serialization“rel =”nofollow noreferrer“> ascorelib

  

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

AS处理XML就像任何其他本机类型一样。放心。 XML是处理您将要关闭并重新放回服务器的数据的首选方式。当然, ascorelib 为您提供了一个JSON类 - 所以您可能也想看看它。

  

Perl中的'eval'函数与我正在寻找的类似,当然也没有保存代码。

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top