【问题标题】:No implicit format for List for BSONObjectIDBSONObjectID 的列表没有隐式格式
【发布时间】:2015-07-09 16:44:14
【问题描述】:

我的一个模型包含一个 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] 没有隐式格式 可用。

它在以下 sn-p 的最后一行抱怨。

  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] 正在工作。

有人知道如何为列表添加格式吗?我认为这应该是隐式可用的。

谢谢

【问题讨论】:

  • 请看documentation,它表示BSON/JSON转换的推荐导入。
  • 我重新检查过,但找不到任何我没有使用的导入。您发现我在上面给出的示例中没有使用的任何特定导入?
  • 如果您阅读了指定的文档,您会看到“建议使用以下导入以确保 JSON/BSON 转换可用。import play.modules.reactivemongo.json._, ImplicitBSONHandlers._”。
  • @cchantep 谢谢,但它不能解决问题。我更新了片段以明确我现在正在使用哪些导入。

标签: scala reactivemongo playframework-2.4 play-reactivemongo


【解决方案1】:

您可以尝试使用快照"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._提供

【讨论】:

  • 谢谢!我会在哪个 maven repo 中找到快照?
  • 如文档中所示,快照在 OSS sonatype 上。
猜你喜欢
  • 2019-10-20
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
相关资源
最近更新 更多