【问题标题】:Play2 + Casbah: How to provide an implicit Writes for ObjectIdPlay2 + Casbah:如何为 ObjectId 提供隐式写入
【发布时间】:2013-03-29 22:29:56
【问题描述】:

有一个简单的模型类,其中包含一些数据库 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 提供隐式写入。如何做到这一点?

【问题讨论】:

    标签: scala playframework casbah salat


    【解决方案1】:

    该错误表示它不知道如何序列化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获得。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多