Проблема десериализации в Scala Play Salat с типом Map [String, List [Object]] - PullRequest
0 голосов
/ 08 мая 2019

Я использую Scala Salat для перемещения объектов в моем проекте с использованием MongoDB.

Вот мои занятия:

case class MyObject(
   name: String,
   metaInfos: Map[String, List[MetaInfo]] 
)

case class MetaInfo(
  timestamp: Int,
  text: String
)

Итак, в Mongo metaInfos выглядит так:

"metaInfos" : {
  "info1" : [
     {
       "timestamp" : 123,
       "text" : "some_text"
     },
     {
       "timestamp" : 321,
       "text" : "other_text"
     }
   ],
  "info2": [...] 
}

Когда я пытаюсь получить значения MetaInfo, возникает эта ошибка:

Произошла ошибка сервера: scala.collection.immutable.Map $ Map2 не может быть приведение к моделям. MetaInfo

Поэтому, когда я попытался распечатать его, я обнаружил, что я не получил List[MetaInfo] в качестве значений, я получил List[Map2] объектов. Таким образом, элементы списка выглядят как Map(timestamp -> 123, text -> "some_text")

Нет ошибок компиляции, все нормально, пока я не попытаюсь получить значения из моей metaInfos карты.

Есть ли способ справиться с этим без изменения способа хранения данных?

Он отлично работает с типом Map [String, Object], но по какой-то причине не может обрабатывать списки объектов.

...