0

これは非常に単純な質問ですが、ドキュメントが見つかりません。

私は単純なクラスを持っています:

public class User
{
    public var name:String;
    public var age:int;
}

これを使用してシリアル化したい:

var user:User = new User();
user.age = 15;
user.name = "mike";
//now serialize
var bytes:ByteArray = MessagePack.encoder.write(vo);

しかし、私はエラーが発生します:

Error: MessagePack handler for type base not found

MessagePack に User クラスとは何か、シリアル化する方法を知らせるにはどうすればよいですか?

4

1 に答える 1

1

ほとんどのシリアライザーのように、MessagePack はクラスをシリアライズできないようです。

toObjectUser クラスにメソッドを追加することをお勧めします。

public function toObject():Object
{
    return {age:this.age, name:this.name}:
}

次に、ユーザーをシリアル化できます。

var bytes:ByteArray = MessagePack.encoder.write(user.toObject());

fromObjectオブジェクトを受け取り、このオブジェクトで初期化された新しい User を返す静的メソッドを追加することもできます。

static public function fromObject(o:Object):User
{
    var u = new User();
    u.age = o.age;
    u.name = o.name;

    return u;
}
于 2012-10-10T14:41:14.963 に答える