Scala / Play / Joda - 未找到 Json 类型的序列化程序(字符串,org.joda.time.DateTime)
Scala / Play / Joda - No Json Serializer found for type (String, org.joda.time.DateTime)
我正在尝试序列化一个 (String, DateTime),但我 运行 出错了。我知道有更新的 play.libs.json.jodaReads / .jodaWrites
,但我目前必须使用下面显示的方法。
如何为 joda DateTime 正确定义 reads/writes/format?
import play.api.concurrent.Execution.Implicits.defaultContext
import play.libs.json._
import org.joda.time.DateTime
存储库
def dateTimeCall(id: String): Future[(String, DateTime)] = {
implicit val jodaDateReads = Reads.jodaDateReads("yyyyMMdd'T'HHmmss.SSS'Z'")
implicit val jodaDateWrites = Writes.jodaDateWrites("yyyyMMdd'T'HHmmss.SSS'Z'")
implicit val dateFormat: Format[DateTime] = Format(jodaDateReads, jodaDateWrites)
implicit val dateTimeFormat: Format[(String, DateTime)] = Json.format[(String, DateTime)]
val result: Future[(String, DateTime)] = getDateTime(id)
result
}
控制器
def dateTimeController(/* -- ommitted --*/) {
val id = "..."
repository.getDateTime(id).map {
result =>
Ok(serialize(result))
}
}
错误
No Json serializer found for type (String, org.joda.time.DateTime). Try to implement an implicit Writes or Format for this type.
[error] Ok(serialize(result))
[error] ^
谢谢。
您应该在您的方法之外定义 Json Readers 和 Writers,可能在某个对象中。然后导入它。否则你的暗示是不可见的。在这种情况下,在 Controller 中,您应该将它们作为导入的,或者您可以在 body
中定义
我正在尝试序列化一个 (String, DateTime),但我 运行 出错了。我知道有更新的 play.libs.json.jodaReads / .jodaWrites
,但我目前必须使用下面显示的方法。
如何为 joda DateTime 正确定义 reads/writes/format?
import play.api.concurrent.Execution.Implicits.defaultContext
import play.libs.json._
import org.joda.time.DateTime
存储库
def dateTimeCall(id: String): Future[(String, DateTime)] = {
implicit val jodaDateReads = Reads.jodaDateReads("yyyyMMdd'T'HHmmss.SSS'Z'")
implicit val jodaDateWrites = Writes.jodaDateWrites("yyyyMMdd'T'HHmmss.SSS'Z'")
implicit val dateFormat: Format[DateTime] = Format(jodaDateReads, jodaDateWrites)
implicit val dateTimeFormat: Format[(String, DateTime)] = Json.format[(String, DateTime)]
val result: Future[(String, DateTime)] = getDateTime(id)
result
}
控制器
def dateTimeController(/* -- ommitted --*/) {
val id = "..."
repository.getDateTime(id).map {
result =>
Ok(serialize(result))
}
}
错误
No Json serializer found for type (String, org.joda.time.DateTime). Try to implement an implicit Writes or Format for this type.
[error] Ok(serialize(result))
[error] ^
谢谢。
您应该在您的方法之外定义 Json Readers 和 Writers,可能在某个对象中。然后导入它。否则你的暗示是不可见的。在这种情况下,在 Controller 中,您应该将它们作为导入的,或者您可以在 body
中定义