Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用scala play,如何将具有ObjectId的类转换为Json?_Json_Mongodb_Scala_Playframework - Fatal编程技术网

使用scala play,如何将具有ObjectId的类转换为Json?

使用scala play,如何将具有ObjectId的类转换为Json?,json,mongodb,scala,playframework,Json,Mongodb,Scala,Playframework,我有一个案例课: case class Branch( _id: ObjectId, rootcommit: Option[ObjectId], name: String, commits: List[ObjectId] ) 我想在一段时间后将其转换为json implicit val format = Json.format[Branch] 但是我得到了这个错误 No implicit format for org.mongodb.scala.bson.ObjectId 及 是否会导致

我有一个案例课:

case class Branch(
_id: ObjectId,
rootcommit: Option[ObjectId],
name: String,
commits: List[ObjectId]
)
我想在一段时间后将其转换为json

implicit val format = Json.format[Branch]
但是我得到了这个错误

No implicit format for org.mongodb.scala.bson.ObjectId

是否会导致

No unapply function found
[error]   implicit val format = Json.format[ObjectId]

我必须明确定义格式,包括:

implicit val objectIdFormat: Format[ObjectId] = Format(
    Reads[ObjectId] {
      case s: JsString => if (ObjectId.isValid(s.toString)) JsSuccess(new ObjectId(s.toString)) else JsError()
      case _           => JsError()
    },
    Writes[ObjectId]((o: ObjectId) => JsString(o.toHexString))
)

您可以尝试为case类创建一个伴生对象,并将
Json.format
放入其中:

case class Branch(
                   _id: ObjectId,
                   rootcommit: Option[ObjectId],
                   name: String,
                   commits: List[ObjectId]
                 )

object Branch {
  implicit val format: OFormat[Branch] = Json.format[Branch]
}
然后,您将使用如下内容解析Json:

...
thing =>
  Json.parse(thing).as[Branch]
...
。。。或者任何适合用户需要的东西

...
thing =>
  Json.parse(thing).as[Branch]
...