MessagePack for Scalaでシリアライズ

RedisにScalaのオブジェクトを保存するため、MessagePackでシリアライズしてみる。 QuickStartを参考に書いてみる。

import org.msgpack.ScalaMessagePack._
import org.msgpack.annotation.Message
@Message
case class Test(hoge:Int, fuga:Int)

val v = Test(1,2)
val binary = write(v)

すると、こんなエラーが。

[MessageTypeException: org.msgpack.template.builder.TemplateBuildException: org.msgpack.MessageTypeException: Can't find plain constructor or companion object]

引数なしのコンストラクタが必要らしい・・・。 ということで、こんな感じに。

import org.msgpack.ScalaMessagePack._
import org.msgpack.annotation.Message
@Message
case class Test(var hoge:Int, var fuga:Int){
  def this() = this(0,0)
}

val v = Test(1,2)
val binary = write(v)
val test = read[Test](binary)

とりあえず、これでcase classなインスタンスシリアライズできるようになりました。 これで、Redisに書き込む準備ができました。