使用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]
...