0

Play アプリケーションで reactmongo を使用しています。私のモデルは、_id ではなくプロパティ id を使用します。モデルの id プロパティにマップされるように、オブジェクト ID(_id) を自動的に変換するにはどうすればよいですか。

現在、私は手作業でフォーマットを書いています:

implicit val adviceFormat = (
  (__ \ '_id).format[BSONObjectID] and
  (__ \ 'lang).format[Lang] and
  (__ \ 'title).format[String] and
  (__ \ 'text).format[String] and
  (__ \ 'reads).formatNullable[Seq[PeriodCounter]] and
  (__ \ 'creationDate).format[DateTime] and
  (__ \ 'updateDate).format[DateTime]
)(Advice.apply, unlift(Advice.unapply))

しかし、私は書きたいだけです:

implicit val adviceFormat = Json.format[Advice]

更新

trevor.reznik の回答に基づいて、私はそれを理解しました。

implicit val adviceJSONReads = __.json.update((__ \ 'id).json.copyFrom((__ \ '_id).json.pick[JsObject] )) andThen Json.reads[Advice]
implicit val adviceJSONWrites = Json.writes[Advice].transform( js => js.as[JsObject] - "id"  ++ Json.obj("_id" -> js \ "id") )
4

1 に答える 1