Подтвердить что ты не робот

Нет Json-сериализатора как JsObject для типа 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", я получаю:

Нет 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 collection = db.collectionJSONCollection

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

Что я делаю неправильно?

4b9b3361

Ответ 1

Вышла окончательная версия ReactiveMongo 0.11 ("org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play23").

Как указано в обновленной документации, для конверсий BSON/JSON по умолчанию рекомендуется иметь: import play.modules.reactivemongo.json._, ImplicitBSONHandlers._.

Ответ 2

В моем случае я загружал ReactiveMongo (insert) вместо JsValue вместо JsValue. Чтобы исправить это, за добавлением 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(...)

Ответ 3

Шахта разработана после добавления: import play.modules.reactivemongo.json._ import play.modules.reactivemongo.json.collection._

Ответ 4

Для меня добавление этого импорта сработало.

import play.modules.reactivemongo.json._

Ответ 5

попробуйте добавить

импортировать реактивныеmongo.play.json._