有一个简单的模型类,其中包含一些数据库 ID。它看起来像这样:
case class Post(id: ObjectId, owner: Option[ObjectId], title: String)
object Post {
implicit val implicitPostWrites = Json.writes[Post]
}
使用此代码,编译器会给出以下错误:
No implicit Writes for com.mongodb.casbah.commons.TypeImports.ObjectId available. implicit val implicitFooWrites = Json.writes[Foo]
很明显缺少什么,但我不知道如何为 com.mongodb.casbah.commons.TypeImports.ObjectId 提供隐式写入。如何做到这一点?
最佳答案
该错误意味着它不知道如何序列化 ObjectId
并希望您为其提供 Writer
。这是序列化它的一种方法:
object Post {
implicit val objectIdWrites = new Writes[ObjectId] {
def writes(oId: ObjectId): JsValue = {
JsString(oId.toString)
}
}
implicit val implicitPostWrites = Json.writes[Post]
}
可获取更多信息和解释 here .
关于scala - Play2 + 卡斯巴 : How to provide an implicit Writes for ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712402/