最近動向をチェックしてなかったが、MessagePack for Javaのバージョンが0.6になっていた。なのでさっそく使ってみた。シリアライズしたいクラスの宣言に@Messageというアノテーションを付ければOK。フィールドはpublicにするのと引数無しのコンストラクタが必要らしい。引数ありのコンストラクタを宣言したらエラーになってちょっと焦った。必須なjarはコンパイル時にmsgpack、実行時にmsgpackとjavassistが最低限必要らしい
import org.msgpack.annotation.Message; @Message public class User{ public String name; public int age; public User(){ } public User(String name, int age){ this.name = name; this.age = age; } }
あとはMessagePack#readとMessagePack#writeを呼ぶだけ。超簡単
import org.msgpack.MessagePack; import java.io.IOException; public class Test{ public static void main(String[] args) throws IOException { User user = new User("d-kami", 27); MessagePack msgpack = new MessagePack(); //シリアライズ byte[] data = msgpack.write(user); //デシリアライズ User d_kami = msgpack.read(data, User.class); System.out.printf("name = %s, age = %d\n", d_kami.name, d_kami.age); } }