0

タイトルが示すように、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'
}
4

2 に答える 2

0

あなたは考え過ぎかもしれません。Dictionary の代わりに Object を使用すると、AMF を使用して自動的にエンコードされます。私は常にpyamfを使用してオブジェクト/ディクテーションを渡しますが、私の側で精神的な努力をしなくても常に機能します。手動でシリアル化/逆シリアル化する必要はありません

于 2010-04-23T14:18:09.297 に答える
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
于 2011-10-13T15:45:46.610 に答える