不要反序列化映射到选项[Set[A]]的集合



我在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

最新更新