5

scala-salat Google グループでこの質問をしましたが、数日間応答がなかったため、ここで試してみました。

でラップされたコレクションを持つケースクラスがありOptionます。

case class SomeClass(
  var name:Option[String]=None,
  var addresses:Option[Set[Address]]=None
)

case class Address(
  var street:Option[String]=None,
  var zip:Option[String]=None
) 

ドキュメントはMongoに問題なく保存されます。ただし、findOne( の有無にかかわらずSalatDAO) を使用してこれを取得しようとすると、アドレス フィールドには Address ケース クラスではなく、アドレスを表す JSON テキストが含まれます。

その結果、Lift-JSON はケース クラス内のすべてのフィールドをスキップしますOption[Collection[A]]。を削除して を使用するOptionaddresses=Set[Address]()、機能します。ただし、JSON にデータのない空のセットが作成され、消費者がエントリを削除したかどうかを更新時に確認する方法がありません。またはSet、消費者がこのフィールドを送信しなかったために空になっています。元のリクエスト。

を使用Optionすると、フィールドが に設定されます。つまり、フィールドNoneが空になったり変更されたりすることを心配する必要はありません。

どんな助けでも大歓迎です。

4

2 に答える 2

4

申し訳ありませんが、Salat は現在、コレクションを含むオプションをサポートしていません。

于 2011-09-18T13:21:20.183 に答える
1

現在 Salat は lift-json に裏打ちされた JSON 機能を提供しているため、そもそもこの Option[Set[A]] の混乱を避けることができます。

Salat の JSON 変換は、デフォルトの引数、すべての Salat 注釈、およびカスタムの日付と ObjectId のシリアル化をサポートしています。

https://github.com/novus/salat/wiki/JSONを参照してください

于 2012-06-22T16:20:44.847 に答える