7

play.api.libs.json._ ライブラリを使用しています。私はこの種のScalaクラスを持っています。このクラスを Json 形式で読み書きする必要があります。Timestamp には暗黙的なリーダー/ライターが存在しないためです。私は自分自身を提供しなければなりません。残念ながら、いくつかの方法を試しましたが、どれもうまくいきませんでした。それがどのように行われるか教えてください。前もって感謝します!

case class Event(id: Long, startTime: Option[java.sql.Timestamp] = None, endTime: Option[java.sql.Timestamp] = None)

以下のJson形式でPOST/GETしたい

{
  "id": 1,
  "startTime": "2011-10-02 18:48:05.123456",
  "endTime": "2011-10-02 20:48:05.123456"
}
4

2 に答える 2

5

私が個人的なプロジェクトのためにコーディングしたこと:

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

于 2015-03-03T12:59:25.917 に答える