私は初心者であり、scala/play であり、playframework の JSON の読み取り/書き込みについて助けが必要です。
Json.reads[T] および Json.writes[T] マクロを使用して、クラスの json の読み取りと書き込みを定義します。ただし、1 つのプロパティ名を (常に) 異なる方法でマッピングしたいと考えています。つまり、クラスで名前が付けられたプロパティがあり、オブジェクトがjsonに変換されたとき、またはその逆に変換されたときにid
それを表現したいと考えています。_id
これを達成するために Json.reads および Json.writes マクロによって生成された読み取り/書き込みオブジェクトを変更する方法はありますか、または 1 つのプロパティを別の名前にするためだけに読み取りと書き込みを手動で書き直す必要がありますか?
編集
問題をよりよく説明してみましょう。モデルオブジェクト User を考えてみましょう:
case class User (id: BigInt, email: String, name: String)
REST API のコンテキストで json を提供する目的で User を json にシリアル化する場合、json は次のようになります。
{ "id": 23432, "名前": "ジョー", "メール: "joe@example.com" }
MongoDB json からの保存/更新/読み取りの目的で User を json にシリアル化する場合、次のようになります。
{ "_id": 23432, "名前": "ジョー", "メール: "joe@example.com" }
id
つまり、Mongo との通信をとして表す必要がある場合を除いて、すべて同じ_id
です。
Darcy Qiu の回答で提案されているように、モデル オブジェクトごとに 2 セットの読み取りと書き込み (1 つは Web 用、もう 1 つは Mongo との通信用) を手動で記述できることはわかっていますが、2 セットの読み取りと書き込みはほぼ維持されています。 id プロパティを除いて同一であるため、コードの重複が多いように思われるため、より良いアプローチがあるかどうか疑問に思っています。