【发布时间】:2018-03-27 15:30:58
【问题描述】:
尝试迁移我的代码玩 2.6 一切都很好,除了 DateTime 类型的格式。
作为迁移的一部分,我确实添加了 play-json-joda 作为依赖项。
但是,像这样:
case class GeoArea(id: Option[Int] = None,
continentId: Option[Int] = None,
countryId: Option[Int] = None,
code: String,
name: String,
discr: Discriminator.Value,
createdAt: DateTime = DateTime.now,
updatedAt: DateTime = DateTime.now,
deletedAt: Option[DateTime] = None,
createdBy: Option[String] = None,
updatedBy: Option[String] = None)
格式对象定义为:
implicit lazy val geoAreaFormat: Format[GeoArea] = Json.format[GeoArea]
我收到一个错误:
没有 play.api.libs.json.Format 的实例可用于 org.joda.time.DateTime, org.joda.time.DateTime, scala.Option[org.joda.time.DateTime] 在隐式范围内(提示:如果 在同一个文件中声明,确保之前声明过)[错误]
隐式惰性 val geoAreaFormat: Format[GeoArea] = Json.format[地理区域]
我错过了什么?我还需要什么来解决这个问题?
我的导入如下所示:
import driver.PGDriver.api._
import org.joda.time.DateTime
import play.api.libs.json._
import slick.lifted.Tag
import model.GeoAreas.Discriminator
import converters.{JsonEnumeration, SlickEnumeration}
它们并没有像迁移期间那样发生变化,但这些足以让一切正常工作。
【问题讨论】:
-
第一个谈到 play 2.3,它与 2.6 不同。另外两个完全不相关。 Joda.DateTime 有一个标准格式。我可能不知道如何使用它。
-
不,例如这个答案说大约 2.6(它来自我的第一个链接):stackoverflow.com/a/45440349/5249621
-
那么,这是否意味着在 2.6 中我必须定义自己的?没有默认实现?
-
仅供参考,Joda-Time 项目现在位于maintenance mode,团队建议迁移到java.time 类。见Tutorial by Oracle。
标签: json scala datetime playframework jodatime