さまざまな種類のオブジェクトを json と xml にシリアル化する必要があるシステムがあります。それらの一部は Lift MetaRecords であり、一部はケース クラスです。型クラスを使用して、次のようなものを作成したかったのです。
trait Serializable[T] {
serialize[T](obj: T): T
}
そして、json、xml、および拡張用のオープンの通常の実装。
私が今直面している問題は、シリアル化そのものです。現在、オブジェクトがシリアル化されるさまざまなコンテキストがあります。ニュース フィード システムを想像してみてください。User、Post (フィード要素)、Photo の 3 つのオブジェクトがあります。これらのオブジェクトにはいくつかのプロパティがあり、相互に参照できます。同じケースで、オブジェクトのみをシリアライズしたい (ユーザー設定、設定など) 他の場合には、他のオブジェクトもシリアライズする必要があります。フィード: リスト[投稿] + 関連写真。そのためには、参照されるオブジェクトを提供する必要があります。
私の現在の実装は、オプションのパラメーター化された関数で肥大化しています。
def feedAsJson(post: MPost, grp: Option[PrivateGroup], commentsBox: Option[List[MPostComment]] = Empty): JObject
ある種のコンテキスト ソリューションを実装することを考えました。必要なデータを提供する暗黙のコンテキスト パラメーターで feedAsJson をオーバーロードします。おそらくケーキパターンでデータベースに触れるので、まだどのように実装したいかわかりません。どんな提案でも大歓迎です。