找不到类型models.MpMember的ByteString反序列化器。尝试为此类型实现隐式ByteStringDeserializer

时间:2015-08-20 16:20:32

标签: json scala redis playframework-2.4

我正在使用etaty rediscala(1.4.2)连接到Play 2.4中的Redis。我的代码如下:

override def getMember(token: String): Future[Option[Member]] = {
  redisClient.get[Member](token)
}

但是,它显示了这个错误:

找不到类型models.Member的ByteString反序列化器。尝试为此类型实现隐式的ByteStringDeserializer。

我的成员如下:

case class Member(
  memberId : Long = 0l,
  email : String = "",
  firstName : Option[String] = None,
  lastName : Option[String] = None
)

object Member {
  implicit val memberReads : Reads[Member] = Json.reads[Member]
  implicit val memberWrites : Writes[Member] = Json.writes[Member]
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我找到了解决方案。我将Scala对象转换为Json并将其保存为Redis作为字符串。

object Member {
  implicit val byteStringFormatter = new ByteStringFormatter[Member] {
    def serialize(data: Member): ByteString = {
    ByteString(Json.toJson(data).toString)
  }

  def deserialize(bs: ByteString): Member = {
    val s = bs.utf8String
    Json.fromJson[Member](Json.parse(s)).get
  }
}

}