Play Framework не может десериализовать JSON чтение из Mongo - PullRequest
0 голосов
/ 02 апреля 2020

Наше приложение использует Play, ReactiveMon go Scala драйвер и Mon go DB. У нас есть следующие версии этих компонентов:

  • com.typesafe.play %% play- json% 2.5.18
  • com.typesafe.play %% play% 2.5 .18
  • com.typesafe.play %% play-ws% 2.5.18
  • org.reactivemon go %% play2-реагирующийmon go% 0,20,3-play25
  • org.reactivemon go %% реактивныймон go -play- json% 0.20.3-play25
  • org.reactivemon go% реактивныймон go -bson_2.11% 0.20.3
  • org.reactivemon go %% реактивныймон go% 0,20.3

В MongoDB есть объект JSON, который выглядит следующим образом:

«status»: {«siteStatus»: «InProgress», «timestamp»: NumberLong («1585696318513»), «timestampLocalDateTime»: «2020-03-31T23: 11: 58»}

Когда наше приложение пытается прочитать этот объект, мы получаем эту ошибку: JsResultException (ошибки: List ((, List (ValidationError (List (error.expected.jsnumber), WrappedArray ()))) ))

Атрибут, вызывающий Эта ошибка выглядит так: «отметка времени»: NumberLong («1585696318513»). Play Framework ожидает, что он будет в следующем формате: «timestamp»: «1585696318513», но Mon go DB хранит его, добавляя некоторую дополнительную информацию о типе, которую они называют Extended- JSON.

Scala класс, соответствующий этому JSON:

case class Status(siteStatus: SiteStatus, timestamp: Long, timestampLocalDateTime: Option[LocalDateTime] = None, msg: Option[String] = None)

object Status {
implicit val format: OFormat[Status] = Json.format[Status]
}

У нас никогда не было проблем с синтаксическим анализом этого JSON, когда мы использовали старую версию библиотеки play-responsetiveMon go:

«Org.reactivemongo» %% «play2 -activetivemongo»% «0.12.4»

Эта ошибка появилась только после обновления до «play2 -activetivemongo»% «0.20.3-play25». Любая работа вокруг? Пожалуйста, помогите.

Спасибо.

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