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 看起来不像大多数序列化程序那样能够序列化 Class。

我建议您在 User 类中添加一个toObject方法:

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

然后你可以序列化你的用户:

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

您还可以添加一个静态fromObject方法,该方法接受一个对象并返回一个使用该对象初始化的新用户。

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 回答