我在scala-salat Google群里问了这个问题,但是几天没有回复,所以我在这里试了试。
我有一个case类,它有一个用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
,这意味着我不必担心它为空或被修改。
任何帮助都将非常感激。
对不起,Salat目前不支持包含集合的选项
现在Salat提供了lift-json支持的JSON功能,因此您可以首先避免这种Option[Set[A]]混乱。
Salat的JSON转换支持默认参数、所有Salat注释以及自定义日期和ObjectId序列化。
见https://github.com/novus/salat/wiki/JSON