我的理解是 json-lift 支持开箱即用的选项字段。
这是一个示例对象定义:
class TopicModel (
var id: Option[Long],
var name: String,
val slug: String,
var imageUrl: Option[String] )
{}
然后我net.liftweb.json.Serialization.read[Topic](jsonString)
用来读取对象
如果传入 JSON 中的所有字段都存在,则反序列化工作正常。但是,如果我省略选项字段:
{"id": "35", "name": "My topic", "slug": "my-slug" /** imageUrl missing */}
对象返回时所有字段都设置为空。
另一个有趣的事实:只有当代码位于 play 应用的 app 目录下时才会出现问题。如果我们将它放在其他地方并作为罐子包含在内,它就可以正常工作。
有人认为这是 Scala 2.8 的问题(我们使用的是 Play 1.2.3 / Akka 1.0,并且限制使用最新的 Scala)。
任何帮助,将不胜感激...