在引用"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]()
我做错了什么?
答案 0 :(得分:21)
ReactiveMongo 0.11的最终版本已发布("org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23"
)。
如updated documentation所示,对于默认的BSON / JSON转换,建议您使用:import play.modules.reactivemongo.json._, ImplicitBSONHandlers._
。
答案 1 :(得分:6)
在我的情况下,我使用insert
而不是JsValue
向ReactiveMongo(JsObject
)投放。为了解决问题,在添加import play.modules.reactivemongo.json._
之后,我还必须更改Writes
中隐含的OWrites
:
这
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(...)
答案 2 :(得分:6)
添加后我的工作结果如下: import play.modules.reactivemongo.json._ import play.modules.reactivemongo.json.collection ._
答案 3 :(得分:0)
对我来说,添加此导入有效。
import play.modules.reactivemongo.json._
答案 4 :(得分:0)
尝试添加
导入reactmongo.play.json ._