需要json解串器3

我正在为我的Scala Play实施SecureSocial服务! 应用。 我使用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是一个SecureSocial案例类,它没有实现json串行器/解串器。 所以可以预见,我越来越......

No Json deserializer found for type securesocial.core.BasicProfile

我知道如何为我自己的案例类实现读/写,但对于Scala来说,我太新了,无法知道如何为像BasicProfile这样的库案例类做到这一点。 我如何将json读/写添加到BasicProfile?


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

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]
)

由于这些ReadsWrites是隐含的,导入它们应该自动使它们在需要它们的地方工作。

有关更多信息,请参阅文档。

链接地址: http://www.djcxy.com/p/68275.html

上一篇: Need json deserializer for 3rd

下一篇: Handling case classes in twitter chill (Scala interface to Kryo)?