1

是否可以在 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;
}
4

2 回答 2

4

看看ByteArray.writeObject()。它将传递的 AMF 格式的对象保存到字节数组中。这个函数我没用过太多,具体可以序列化什么样的对象我不是很清楚,但绝对不是全部。

于 2009-03-02T20:56:25.600 回答
1

试试ascorelibserialization中基于 JSON 的包。

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

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

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

IIRC,eval是 ECMAScript 规范的一部分(你会在 Javascript 中找到它)。但在 AS3.0 中没有。它在某些以前的版本中在一定程度上存在,但不再受支持。

于 2009-03-02T20:41:18.337 回答