当引用"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集合= db.collectionJSONCollection
val query = Json.obj()
val cursor = collection.find(query).
cursor[GoogleToken](ReadPreference.nearest).
collect[List]()
我做错了什么?
发布于 2015-07-01 02:18:19
ReactiveMongo 0.11的最终版本已经发布("org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23"
)。
正如updated documentation上所指出的,对于默认的BSON/JSON转换,建议使用:import play.modules.reactivemongo.json._, ImplicitBSONHandlers._
。
发布于 2015-07-16 04:45:19
在我的例子中,我给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(...)
发布于 2015-08-14 06:07:50
我的工作是在添加后完成的:导入play.modules.reactivemongo.json._导入play.modules.reactivemongo.json.collection._
https://stackoverflow.com/questions/31142366
复制相似问题