第三方案例类需要json反序列化器
我正在为我的Scala游戏实施安全社会服务!应用我正在使用ReactiveMongoPlugin访问MongoDB商店。这是代码第三方案例类需要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
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
。现在它起作用了。谢谢