Scala playframework 隐式 reader Timestamp 编写器
Scala playframework implicit reader writer for Timestamp
我正在使用 play.api.libs.json._ 库。我有这种 Scala class。我需要以 Json 格式读取/写入此 class。因为时间戳没有隐式 reader/ 编写器。我必须提供我自己的。不幸的是,我尝试了几种方法 none 有效。你能建议我怎么做吗?提前致谢!
case class Event(id: Long, startTime: Option[java.sql.Timestamp] = None, endTime: Option[java.sql.Timestamp] = None)
我想 POST / GET 格式如下 Json
{
"id": 1,
"startTime": "2011-10-02 18:48:05.123456",
"endTime": "2011-10-02 20:48:05.123456"
}
只需在 Json 之前添加 Reader 或 Json 事件格式 class
import play.api.libs.json.Json._
import play.api.libs.json._
def timestampToDateTime(t: Timestamp): DateTime = new DateTime(t.getTime)
def dateTimeToTimestamp(dt: DateTime): Timestamp = new Timestamp(dt.getMillis)
implicit val timestampFormat = new Format[Timestamp] {
def writes(t: Timestamp): JsValue = toJson(timestampToDateTime(t))
def reads(json: JsValue): JsResult[Timestamp] = fromJson[DateTime](json).map(dateTimeToTimestamp)
}
我为个人项目编写的代码:
implicit object timestampFormat extends Format[Timestamp] {
val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'")
def reads(json: JsValue) = {
val str = json.as[String]
JsSuccess(new Timestamp(format.parse(str).getTime))
}
def writes(ts: Timestamp) = JsString(format.format(ts))
}
别忘了导入这个:
import java.sql.Timestamp
import java.text.SimpleDateFormat
import play.api.Play.current
import play.api.libs.json._
它遵循 Javascript 日期标准。
来源:https://github.com/BinaryBrain/Gamers/blob/master/server/play/app/models/Package.scala
我正在使用 play.api.libs.json._ 库。我有这种 Scala class。我需要以 Json 格式读取/写入此 class。因为时间戳没有隐式 reader/ 编写器。我必须提供我自己的。不幸的是,我尝试了几种方法 none 有效。你能建议我怎么做吗?提前致谢!
case class Event(id: Long, startTime: Option[java.sql.Timestamp] = None, endTime: Option[java.sql.Timestamp] = None)
我想 POST / GET 格式如下 Json
{
"id": 1,
"startTime": "2011-10-02 18:48:05.123456",
"endTime": "2011-10-02 20:48:05.123456"
}
只需在 Json 之前添加 Reader 或 Json 事件格式 class
import play.api.libs.json.Json._
import play.api.libs.json._
def timestampToDateTime(t: Timestamp): DateTime = new DateTime(t.getTime)
def dateTimeToTimestamp(dt: DateTime): Timestamp = new Timestamp(dt.getMillis)
implicit val timestampFormat = new Format[Timestamp] {
def writes(t: Timestamp): JsValue = toJson(timestampToDateTime(t))
def reads(json: JsValue): JsResult[Timestamp] = fromJson[DateTime](json).map(dateTimeToTimestamp)
}
我为个人项目编写的代码:
implicit object timestampFormat extends Format[Timestamp] {
val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'")
def reads(json: JsValue) = {
val str = json.as[String]
JsSuccess(new Timestamp(format.parse(str).getTime))
}
def writes(ts: Timestamp) = JsString(format.format(ts))
}
别忘了导入这个:
import java.sql.Timestamp
import java.text.SimpleDateFormat
import play.api.Play.current
import play.api.libs.json._
它遵循 Javascript 日期标准。
来源:https://github.com/BinaryBrain/Gamers/blob/master/server/play/app/models/Package.scala