2

Scala 2.10、Salat and Play frmework 2.1-RC2(まもなく2.1リリースにアップグレード)およびMongoDBを使用してアプリケーションを構築しています。

これは、JSONWebサービスがコンシューマーに公開されるフェイスレスアプリケーションです。これまで、JSONはPlayのJsonAPIと暗黙のコンバーターを使用して直接Modelオブジェクトに変換されていました。22タプルの制限を回避するために、いくつかのケースクラスをリファクタリングする必要があります。フラットケースクラスの代わりに、埋め込みケース(および埋め込みMongoDBコレクション)を持つようにリファクタリングしています。

Webサービスインターフェイスは、クライアントがフラット構造で以前と同じようにJSONデータを渡す必要がある場合でも同じままである必要がありますが、アプリケーションはそれらを適切なケースクラス構造にマップする必要があります。このような状況に対処するための最良の方法は何ですか。複雑なケースクラスからフラットJSON出力への変換コード<->フラットJSON<->複雑なケースクラス構造<->をたくさん書くのが怖いです。

そのような要件にどのようにアプローチしますか?この種の要件を処理するために、ケースクラス22のタプル制限が他の多くの人によって直面された可能性があると思いますか?これにどのようにアプローチしますか

4

1 に答える 1

1

Play 2.1 jsonライブラリは、コンビネータに大きく依存しています(path1 and path2)。これらのコンビネータにはすべて同じ22の制限があります。それはあなたに2つのオプションを与えます:

  1. コンビネータを使用してオブジェクトを難しい方法で構築しないでくださいpath(json)。パスのそのポイントで値が得られます。ScalaJsonCombinatorsで「AccessingvalueofJsPath」を検索すると、さらに多くの例が表示されます。
  2. まず、jsonを単一のオブジェクトに22を超える値を持たない構造に変換してから、通常のコンビネータを使用します。変換の詳細については、ScalaJsonTransformersを参照してください。
于 2013-02-18T11:17:15.047 に答える