我正在使用 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。
我的成员(member)如下:
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]
}
感谢您的帮助。
最佳答案
我找到了解决方案。我将 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
}
}
关于json - 找不到类型 models.MpMember 的 ByteString 解串器。尝试为此类型实现一个隐式的 ByteStringDeserializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123406/