5

我在 scala-salat Google group 中问了这个问题,但几天没有回复,因此在这里尝试。

我有一个案例类,其中包含一个包含在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)来获取此地址时,addresses 字段具有表示地址的 JSON 文本,而不是 Address 案例类。

结果,Lift-JSON 跳过了我的案例类Option[Collection[A]]中的任何字段。当我删除Option并使用时addresses=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 回答