2011-09-17 32 views
5

我在scala-salat Google組中提出了這個問題,但在那裏沒有任何反應,因此嘗試了這裏。薩拉特並非反序列化映射到選項的集合[集合[A]]

我有一個案例類,它有一個收集包裹在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)時,地址字段具有表示地址的JSON文本,而不是地址大小寫類。

因此,Lift-JSON會跳過我的case類中的任何字段,其中包含Option[Collection[A]]。當我刪除Option,並只與addresses=Set[Address](),它的工作。然而,現在我最終在我的JSON中沒有數據的空集,並且如果消費者刪除了條目,我無法找到更新,或者我得到空的Set,因爲消費者沒有發送該字段在原始請求中。

使用Option會將字段設置爲None,這意味着我不必擔心它是空的還是修改的。

任何幫助將不勝感激。

回答

4

對不起,Salat目前不支持包含集合的選項。

+1

THX加盟:) – AndreasScheinert

+0

當它可以支持任何想法?我真的不想回去使用Morphia :( – lobster1234

1

現在Salat提供了由lift-json支持的JSON功能,所以您可以首先避免此選項[Set [A]]混亂。

Salat的JSON轉換支持默認參數,所有Salat註釋以及自定義日期和ObjectId序列化。

https://github.com/novus/salat/wiki/JSON