Насколько я понимаю, json-lift поддерживает поля Option из коробки.
Вот пример определения объекта:
class TopicModel (
var id: Option[Long],
var name: String,
val slug: String,
var imageUrl: Option[String] )
{}
Затем я использую net.liftweb.json.Serialization.read[Topic](jsonString)
для чтения объекта
Если присутствуют все поля во входящем JSON, десериализация работает нормально.Однако, если я опускаю поле Option:
{"id": "35", "name": "My topic", "slug": "my-slug" /** imageUrl missing */}
объект возвращается со всеми полями, установленными на ноль.
Еще один интересный факт: это проблема, только когда код находится в каталоге приложенияигрового приложения.Если мы поместим его в другое место и добавим в качестве баночки, он будет работать просто отлично.
Существует мнение, что это проблема со Scala 2.8 (мы находимся в Play 1.2.3 / Akka 1.0 и ограничены в использованиипоследний Scala).
Любая помощь будет оценена ...