Flash / Flex:是否可以使用AMF对Dictionary进行编码?

时间:2010-04-22 19:35:54

标签: flex flash amf

正如标题所示,是否可以使用AMF编码/解码字典(没有子类化,即)?

例如,这是一个测试用例:

function serializeAndReload(obj:*):* {
    var serialized:ByteArray = new ByteArray();
    serialized.writeObject(obj);
    serialized.position = 0;
    return serialized.readObject();
}

function test():void {
    var d:Dictionary = new Dictionary();
    d[{}] = 42;
    d[d] = true;
    var x:* = serializeAndReload(d); // <<< x is an instance of Object
    trace(x['[object Object]']); // <<< traces '42'
}

2 个答案:

答案 0 :(得分:0)

你可能过分思考。我使用Object而不是Dictionary,它使用AMF自动编码。我一直使用pyamf来传递Objects / dicts,它总是在我没有任何精神上的努力下工作。从来没有我需要手动序列化/反序列化任何东西

答案 1 :(得分:0)

Dictionary中的密钥也需要序列化。

[RemoteClass(alias="Foo")]
public class Foo
{
}

测试:

var d:Dictionary = new Dictionary();
var f:Foo = new Foo();
d[f] = "Hello";
var ba:ByteArray = new ByteArray();
ba.writeObject(d);
ba.position = 0;
var d2:Dictionary = Dictionary(ba.readObject());
for (var key:* in d2)
{
    trace(getQualifiedClassName(key));
    trace(d2[key]);
}

输出:

Foo
Hello