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に書き込む準備ができました。