Playframework Play Framework无法反序列化从Mongo读取的JSON

Playframework Play Framework无法反序列化从Mongo读取的JSON,playframework,play-reactivemongo,Playframework,Play Reactivemongo,我们的应用程序使用Play、ReactiveMongo Scala驱动程序和Mongo DB。我们有这些组件的以下版本: com.typesafe.play%%播放json%2.5.18 com.typesafe.play%%play%2.5.18 com.typesafe.play%%播放ws%2.5.18 org.reactivemongo%%play2 reactivemongo%0.20.3-play25 org.reactivemongo%%reactivemongo播放json%0

我们的应用程序使用Play、ReactiveMongo Scala驱动程序和Mongo DB。我们有这些组件的以下版本:

  • com.typesafe.play%%播放json%2.5.18
  • com.typesafe.play%%play%2.5.18
  • com.typesafe.play%%播放ws%2.5.18
  • org.reactivemongo%%play2 reactivemongo%0.20.3-play25
  • org.reactivemongo%%reactivemongo播放json%0.20.3-play25
  • org.reactivemongo%reactivemongo-bson_2.11%0.20.3
  • org.reactivemongo%%reactivemongo%0.20.3
MongoDB中有一个JSON对象如下所示:

“状态”:{ “站点状态”:“正在进行中”, “时间戳”:NumberLong(“1585696318513”), “timestampLocalDateTime”:“2020-03-31T23:11:58” }

当我们的应用程序尝试读取此对象时,会出现以下错误: JsResultException(错误:List(,List(ValidationError(List(error.expected.jsnumber),WrappedArray())))

导致此错误的属性是:“timestamp”:NumberLong(“1585696318513”)。Play Framework希望它采用这种格式:“timestamp”:“1585696318513”,但Mongo DB通过添加一些额外的类型信息(他们称之为扩展JSON)来存储它

与此JSON对应的Scala类是:

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]
}
当我们使用较旧版本的play reactiveMongo库时,解析此JSON从未遇到任何问题:

“org.reactivemongo”%%“播放2 reactivemongo”%%“0.12.4”

此错误仅在升级到“play2 reactivemongo”%“0.20.3-play25”后发生。有什么解决办法吗?请帮忙


谢谢。

您解决过这个问题吗?这是我目前正在做的事情。