1

私のモデルの 1 つに、BSONObjectID のリストが含まれています。

case class User(
  _id: BSONObjectID = BSONObjectID.generate,
  email: String,
  favorite_ids: List[BSONObjectID] = List(),
  home_folder_id: Option[BSONObjectID] = None
)

残念ながら、コンパイラは次のメッセージを表示します。

List[reactivemongo.bson.BSONObjectID] の暗黙的な形式は利用できません。

次のスニペットの最後の行で文句を言います。

  import play.api.libs.json._
  import reactivemongo.bson._
  import play.modules.reactivemongo.json.BSONFormats._
  import play.modules.reactivemongo.json._, ImplicitBSONHandlers._
  import play.modules.reactivemongo.json.collection._

  implicit val userFormat = Json.format[User]

面白い観察: List[] 行をコメントアウトすると、Option[BSONObjectID] が機能します。

リストのフォーマットを含める方法を知っている人はいますか? 私はそれが暗黙的に利用可能であるべきだと考えました。

ありがとう

4

1 に答える 1

2

スナップショットで試すことができます"org.reactivemongo" %% "play2-reactivemongo" % "0.11.2.play24-SNAPSHOT"

scala> import play.modules.reactivemongo.json._
import play.modules.reactivemongo.json._

scala> import reactivemongo.bson._
import reactivemongo.bson._

scala> import play.api.libs.json._
import play.api.libs.json._

scala> implicitly[Reads[BSONObjectID]]
res0: play.api.libs.json.Reads[reactivemongo.bson.BSONObjectID] = play.modules.reactivemongo.json.BSONFormats$BSONObjectIDFormat$@4d27019c

scala> implicitly[Writes[BSONObjectID]]
res1: play.api.libs.json.Writes[reactivemongo.bson.BSONObjectID] = play.modules.reactivemongo.json.BSONFormats$BSONObjectIDFormat$@4d27019c

scala> implicitly[Format[BSONObjectID]]
res2: play.api.libs.json.Format[reactivemongo.bson.BSONObjectID] = play.modules.reactivemongo.json.BSONFormats$BSONObjectIDFormat$@4d27019c

scala> implicitly[Format[List[BSONObjectID]]]
res3: play.api.libs.json.Format[List[reactivemongo.bson.BSONObjectID]] = play.api.libs.json.DefaultFormat$$anon$4@43b5fbbd

scala> implicitly[Reads[JsObject]]
res4: play.api.libs.json.Reads[play.api.libs.json.JsObject] = play.api.libs.json.DefaultReads$JsObjectReads$@78a1f869

scala> implicitly[OWrites[BSONDocument]]
res5: play.api.libs.json.OWrites[reactivemongo.bson.BSONDocument] = play.modules.reactivemongo.json.ImplicitBSONHandlers$BSONDocumentWrites$@1763c4c3

暗黙的なものはすべて、統合によって提供されますimport play.modules.reactivemongo.json._

于 2015-07-10T17:54:48.933 に答える