第三方案例类需要json反序列化器

第三方案例类需要json反序列化器,json,mongodb,scala,playframework,Json,Mongodb,Scala,Playframework,我正在为我的Scala游戏实施安全社会服务!应用我正在使用ReactiveMongoPlugin访问MongoDB商店。这是代码 lazy val users: JSONCollection = ReactiveMongoPlugin.db.collection[JSONCollection]("users") def find(providerId: String, userId: String): Future[Option[BasicProfile]] = { users

我正在为我的Scala游戏实施安全社会服务!应用我正在使用ReactiveMongoPlugin访问MongoDB商店。这是代码

lazy val users:  JSONCollection = ReactiveMongoPlugin.db.collection[JSONCollection]("users")

def find(providerId: String, userId: String): Future[Option[BasicProfile]] = {
  users
    .find(Json.arr(Json.obj("providerId" -> providerId), Json.obj("userId" -> userId)))
    .cursor[BasicProfile]
    .headOption
}
BasicProfile是一个不实现json序列化器/反序列化器的SecureSocial case类。所以可以预见的是我会

No Json deserializer found for type securesocial.core.BasicProfile

我知道如何为自己的case类实现读/写操作,但我对Scala太陌生,不知道如何为BasicProfile这样的库case类实现读/写操作。如何将json读/写添加到BasicProfile?

读和
写添加到库案例类与将它们添加到您自己的类非常相似。您需要为每个库案例类创建一个
读取
和一个
写入
。例如,假设我们有这些案例类:

case class Example(a: String, b: ExampleB)
case class ExampleB(c: Int)
应使用以下方法对其进行分析:

implicit val exampleWrites: Writes[Example] = (
  (JsPath \ "a").write[String] and
  (JsPath \ "b").write[ExampleB]
)

implicit val exampleBWrites: Writes[ExampleB] = (
  (JsPath \ "c").write[Int]
)

implicit val exampleReads: Reads[Example] = (
  (JsPath \ "a").read[String] and
  (JsPath \ "b").read[ExampleB]
)

implicit val exampleBReads: Reads[ExampleB] = (
  (JsPath \ "c").read[Int]
)
由于这些
读取
写入
是隐式的,因此导入它们应该会自动使它们在需要的地方工作


有关详细信息,请参阅。

我之前尝试过,但出现编译错误
找不到隐式ExecutionContext
。再次阅读错误后,我看到我需要做的就是添加
import scala.concurrent.ExecutionContext.Implicits.global
。现在它起作用了。谢谢