"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シリアライザーが見つかりません。このタイプの暗黙的なOWriteまたは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]()
私は何が間違っているのですか?
ReactiveMongo 0.11の最終リリースが公開されました("org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23"
)。
更新されたドキュメント に示されているように、デフォルトのBSON/JSON変換では、import play.modules.reactivemongo.json._, ImplicitBSONHandlers._
を使用することをお勧めします。
追加した後、私のものはうまくいきました:import play.modules.reactivemongo.json._ import play.modules.reactivemongo.json.collection._
私の場合、ReactiveMongo(insert
)にJsValue
ではなく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(...)
追加してみてください
インポートreactivemongo.play.json._
私にとって、このインポートを追加することはうまくいきました。
import play.modules.reactivemongo.json._