Salat не десериализует коллекции, которые отображаются в Option [Set [A]] - PullRequest
5 голосов
/ 18 сентября 2011

Я задавал этот вопрос в группе Google scala-salat, но не получил ответа в течение нескольких дней, поэтому и пытаюсь здесь.

У меня есть класс 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
) 

Документ отлично хранится в Монго. Однако, когда я пытаюсь получить это, используя findOneSalatDAO или без него), поле адреса имеет текст JSON, представляющий адреса, а не класс регистра адресов.

В результате Lift-JSON пропускает все поля в моем классе дел с Option[Collection[A]] в нем. Когда я удаляю Option и просто иду с addresses=Set[Address](), это работает. Однако теперь я получаю пустые наборы в моем JSON, где нет данных, и у меня нет возможности узнать по обновлению, удалил ли потребитель записи, или я получаю пустую Set, потому что потребитель не отправил это поле в исходном запросе.

Использование Option установило бы для поля значение None, что означало бы, что мне не пришлось бы беспокоиться о том, что оно пустое или измененное.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Извините, Salat в настоящее время не поддерживает опцию, содержащую коллекцию.

1 голос
/ 22 июня 2012

Теперь Salat предлагает функциональность JSON, поддерживаемую lift-json, так что вы можете избежать этого беспорядка Option [Set [A]].

Преобразование JSON Salat поддерживает аргументы по умолчанию, все аннотации Salat,и пользовательская дата и сериализация ObjectId.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...