簡體   English   中英

Flash / Flex:是否可以使用AMF對Dictionary進行編碼?

[英]Flash/Flex: Is it possible to encode Dictionary using 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'
}

您可能想得太多。 我使用對象而不是字典,並且使用AMF自動對其進行編碼。 我一直使用pyamf來傳遞對象/命令,並且始終可以有效地工作。 從來不需要手動序列化/反序列化任何東西

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM