我有一个案例类:
case class Branch(
_id: ObjectId,
rootcommit: Option[ObjectId],
name: String,
commits: List[ObjectId]
)
我希望在
后将其转换为jsonimplicit val format = Json.format[Branch]
但我收到此错误
No implicit format for org.mongodb.scala.bson.ObjectId
和
implicit val format = Json.format[ObjectId]
导致
No unapply function found
[error] implicit val format = Json.format[ObjectId]
答案 0 :(得分:2)
我必须明确定义格式:
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))
)
答案 1 :(得分:1)
您可以尝试为案例类创建一个伴随对象,并将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]
...
......或任何适合您用户需要的东西。