【问题标题】:Salat not deserializing collections that map to Option[Set[A]]Salat 没有反序列化映射到 Option[Set[A]] 的集合
【发布时间】:2011-09-17 23:28:49
【问题描述】:

我在 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)来获取此信息时,地址字段具有表示地址的JSON 文本,而不是地址案例类。

因此,Lift-JSON 会跳过我的案例类中包含 Option[Collection[A]] 的所有字段。当我删除Option 并使用addresses=Set[Address]() 时,它可以工作。但是,现在我的 JSON 中没有数据的结果是空集,如果消费者删除了条目,我无法找到更新,或者我得到一个空的 Set,因为消费者没有发送原始请求中的此字段。

使用Option 会将字段设置为None,这意味着我不必担心它会为空或被修改。

任何帮助将不胜感激。

【问题讨论】:

    标签: scala mongodb salat lift-json


    【解决方案1】:

    抱歉,Salat 目前不支持包含集合的选项。

    【讨论】:

    • 关于何时可以支持的任何想法?我真的不想回去使用 Morphia :(
    【解决方案2】:

    现在 Salat 提供了由 lift-json 支持的 JSON 功能,因此您可以首先避免这个 Option[Set[A]] 混乱。

    Salat 的 JSON 转换支持默认参数、所有 Salat 注释以及自定义日期和 ObjectId 序列化。

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

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2015-04-10
      • 2012-11-20
      • 2012-04-12
      • 2012-11-19
      相关资源
      最近更新 更多