Play: Cómo transformar JSON al escribirlo / leerlo a / desde MongoDB

Aquí hay un JSON simple que quiero escribir / leer a / desde MongoDB:

{
  "id": "ff59ab34cc59ff59ab34cc59",
  "name": "Joe",
  "surname": "Cocker"
}

Antes de guardarlo en MongoDB,"ff59ab34cc59ff59ab34cc59" tiene que ser transformado en unaObjectID yid renombrado a_id... asi que dado lo siguienteReads, como logro eso?

val personReads: Reads[JsObject] = (
  (__ \ 'id).read[String] ~ // how do I rename id to _id AND transform "ff59ab34cc59ff59ab34cc59" to an ObjectID?
  (__ \ 'name).read[String] ~
  (__ \ 'surname).read[String]
) reduce

Y claro, también necesito lo contrario para mi.Writes, es decir, renombrar_id aid y transformando unObjectID a texto plano en el formato"ff59ab34cc59ff59ab34cc59".

Respuestas a la pregunta(2)

Su respuesta a la pregunta