scala - Play2 + 卡斯巴 : How to provide an implicit Writes for ObjectId

标签 scala playframework casbah salat

有一个简单的模型类,其中包含一些数据库 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/

相关文章:

scala - 为 A 和 B 类型创建 given 的最简单方法是什么?

scala - 值 toDS 不是 org.apache.spark.rdd.RDD 的成员

ssh - Play框架2.3.x,无需控制台即可运行

Scala 从泛型实例化一个具体类

javascript - 为什么 Scala 需要 def 语句?

java - 从 AKKA 等 Actor 模型框架调用基于线程的 API

java - 如何使用 Play Framework 通过 SSL 连接到远程 MySQL 数据库?

java - writeConcern 未在 mongodb 中设置为 Acknowledged

mongodb - 使用 Casbah 将 lift-json JValue 转换为 MongoDBObject?

scala - 如何使用 Casbah 在 MongoDB 上按对象 ID 查找?