マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

MessagePack for Java 0.6を超簡単な使い方で使ってみた

最近動向をチェックしてなかったが、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);
    }
}