簡體   English   中英

沒有為類型為play.api.libs.json.JsObject的JsObject找到Json序列化程序

[英]No Json serializer as JsObject found for type play.api.libs.json.JsObject

當引用"org.reactivemongo" %% "play2-reactivemongo" % "0.10.5.0.akka23"時,我有以下代碼在控制台應用程序中工作

當我更新引用"org.reactivemongo" % "play2-reactivemongo_2.11" % "0.11.0.play23-M3"我得到:

沒有為類型為play.api.libs.json.JsObject的JsObject找到Json序列化程序。 嘗試為此類型實現隱式OWrites或OFormat。

import org.joda.time.DateTime
import reactivemongo.bson.BSONObjectID
import play.modules.reactivemongo.json.BSONFormats._

case class GoogleToken
(
  id: Option[BSONObjectID],
  name: String,
  emailAddress: String,
  refreshToken: String,
  expires: DateTime
  )

object GoogleToken {

  import play.api.libs.json.Json

  // Generates Writes and Reads
  implicit val googleTokenFormat = Json.format[GoogleToken]
}

然后

val collection = db.collectionJSONCollection

val query = Json.obj()
val cursor = collection.find(query).
  cursor[GoogleToken](ReadPreference.nearest).
  collect[List]()

我究竟做錯了什么?

已發布ReactiveMongo 0.11的最終版本( "org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23" )。

更新的文檔所示 ,對於默認的BSON / JSON轉換,建議使用: import play.modules.reactivemongo.json._, ImplicitBSONHandlers._

就我而言,我正在喂ReactiveMongo( insert )與JsValue ,而不是比JsObject 為了修復它,在添加import play.modules.reactivemongo.json._ ,我還必須在OWrites更改我的隱式Writes

implicit val myWrites: Writes[A] = new Writes[A] {
  def writes(a: A) = Json.obj(...)

implicit val myWrites: OWrites[A] = new OWrites[A] {  <-- NOTE THE 'O' before 'Writes'
  def writes(a: A) = Json.obj(...)

我在添加之后計算出:import play.modules.reactivemongo.json._ import play.modules.reactivemongo.json.collection._

對我來說,添加此導入工作。

import play.modules.reactivemongo.json._

嘗試添加

import reactivemongo.play.json._

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM