概要
Play Frameworkでは、JSONをパースするplay-json
というライブラリが用意されています。基本的な使い方は、こちらのドキュメントをご参考ください。
今回はこのplay-json
で、Scalaでよく使われるJoda-Timeの日付型を、パースしたい場合の対応メモです。
対応方法
Joda-Timeをパースするためには、別途play-json-jodaというライブラリを使用します。このライブラリを、パースのオブジェクトでインポートしてあげればOKです。
実装サンプル
以下がplay-jsonのcombinatorsで実装した、パースのサンプルです。
JodaTimeをパースするために、DefaultJodaDateTimeReads
とJodaDateTimeWrites
をimportしています。
import org.joda.time.DateTime
import play.api.libs.json.JodaReads.DefaultJodaDateTimeReads
import play.api.libs.json.JodaWrites.JodaDateTimeWrites
import play.api.libs.json._
import play.api.libs.functional.syntax._
object SampleData {
implicit val sampleDataFormat = (
(__ \ "_id").format[String] ~
(__ \ "name").format[String] ~
(__ \ "register_user_id").format[String] ~
(__ \ "register_date").format[DateTime] // これがJodaTimeの日付型
) (SampleData.apply, unlift(SampleData.unapply))
}
case class SampleData(id: String = "",
name: String = "",
registerUserId: String = "",
registerDate: DateTime = DateTime.now())