簡體   English   中英

如何在Akka-http中編組和解組mongo ObjectId

[英]How to marshall and unmarshall mongo ObjectId in akka-http

如何在Akka-http中將mongo ObjectId轉換為字符串ID,反之亦然,以獲取JSON響應對於此User類

case class User(_id: ObjectId, email: String, name: Option[String], birthDate: Option[String])

這個jsonFormat4不起作用。

implicit val userFormat = jsonFormat4(User.apply)

引發此錯誤。

錯誤:(21,40)找不到類型JsonSupport.this.JF [org.mongodb.scala.bson.ObjectId]的證據參數的隱式值隱式val userFormat = jsonFormat4(User.apply)

您需要為ObjectId類型放入自定義序列化程序的作用域:

object MongoDBProtocol extends DefaultJsonProtocol {

  implicit object ObjectIdSerializer extends RootJsonFormat[ObjectId] {
    override def write(obj: ObjectId): JsValue = {
      JsString(obj.toHexString)
    }

    override def read(json: JsValue): ObjectId = {
      val ob = new ObjectId(json.toString())
      ob
    }
  }
}

然后將此對象導入您的路由范圍,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM