لم يتم العثور على مسلسل Json مثل JsObject للنوع play.api.libs.json.JsObject




scala reactivemongo (4)

لدي الكود التالي الذي يعمل في تطبيق وحدة التحكم عند الرجوع إلى "org.reactivemongo" %% "play2-reactivemongo" % "0.10.5.0.akka23"

عندما أقوم بتحديث المرجع إلى "org.reactivemongo" % "play2-reactivemongo_2.11" % "0.11.0.play23-M3" أحصل على:

لم يتم العثور على أداة تسلسل Json مثل JsObject للنوع play.api.libs.json.JsObject. حاول تطبيق 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]()

ما الخطأ الذي افعله؟


بالنسبة لي مضيفا هذا الاستيراد عملت.

import play.modules.reactivemongo.json._

تم نشر الإصدار النهائي من ReactiveMongo 0.11 ( "org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23" ).

كما هو موضح في الوثائق المحدّثة ، بالنسبة لتحويلات BSON / JSON الافتراضية ، يوصى أن يكون لديك: import play.modules.reactivemongo.json._, ImplicitBSONHandlers._ .


في حالتي ، كنت JsValue 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._





reactivemongo