2

有一个简单的模型类,其中包含一些数据库 ID。它看起来像这样:

case class Post(id: ObjectId, owner: Option[ObjectId], title: String)

object Post {
  implicit val implicitPostWrites = Json.writes[Post]
}

使用此代码,编译器会给我以下错误:

com.mongodb.casbah.commons.TypeImports.ObjectId 没有可用的隐式写入。隐式 valimplicitFooWrites = Json.writes[Foo]

很明显缺少什么,但我不知道如何为 com.mongodb.casbah.commons.TypeImports.ObjectId 提供隐式写入。如何才能做到这一点?

4

1 回答 1

4

该错误意味着它不知道如何序列化ObjectId并希望您Writer为它提供一个。这是序列化它的一种方法:

object Post {

  implicit val objectIdWrites = new Writes[ObjectId] {
      def writes(oId: ObjectId): JsValue = {
        JsString(oId.toString)
      }
  }

   implicit val implicitPostWrites = Json.writes[Post]
}

更多信息和解释可在此处获得。

于 2013-03-31T05:40:00.953 回答