Scala 在PlayFramework 2.1中将Json日期和时间字符串解析为带有日期的Case类

Scala 在PlayFramework 2.1中将Json日期和时间字符串解析为带有日期的Case类,scala,playframework-2.1,Scala,Playframework 2.1,在PlayFramework2.1中,我想读取一个json并创建一个case类。结构不同,因此我无法使用默认读取器。要将这两个字符串合并到java.util.Date,我需要编写什么 import play.api.libs.functional.syntax._ import play.api.libs.json._ import play.api.libs.json.util._ import play.api.libs.json.Reads._ case class Person(nam

在PlayFramework2.1中,我想读取一个json并创建一个case类。结构不同,因此我无法使用默认读取器。要将这两个字符串合并到java.util.Date,我需要编写什么

import play.api.libs.functional.syntax._
import play.api.libs.json._
import play.api.libs.json.util._
import play.api.libs.json.Reads._

case class Person(name: String, lastSeen: Date)
val jsonString = Json.parse("""{name: "Joe", day: "2013-03-28", time: "09:35"}""")

val personLastSeen: Reads[Person] = (
  (__ \ "name").read[String] ~
  // (__ \ "day").read[String] (__ \ "time").read[String] // @TODO
)(Person)

我应该把这个读出来吗?我尝试了
val dateStructure=new SimpleDateFormat(“yyyy-MM-dd HH:MM”)
dateStructure.parse(…)
但是我想我需要一个
Reads[Date]
在那里

我想你不能使用Reads[T]组合词来实现这一点,但是你可以定义一个trait Reads及其方法
def read(json:JsValue):JsResult[T]

import play.api.libs.functional.syntax._
import play.api.libs.json._
import play.api.libs.json.util._
import play.api.libs.json.Reads._
import java.util.Date
import java.text.SimpleDateFormat

case class Person(name: String, lastSeen: Date) {      
}

object Person {
  implicit val personLastSeen = new Reads[Person] {
    val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm")
    def reads(js: JsValue): JsResult[Person] = {
      JsSuccess(Person(
        (js \ "name").as[String],
        sdf.parse((js \ "day").as[String] + " " + (js \ "time").as[Float])))
    }
  }
}
object Test extends App {
    val jsonString = Json.parse("""{name: "Joe", day: "2013-03-28", time: "09:35"}""")
}

我认为不能使用Reads[T]组合符来实现这一点,但可以定义trait Reads及其方法
def read(json:JsValue):JsResult[T]

import play.api.libs.functional.syntax._
import play.api.libs.json._
import play.api.libs.json.util._
import play.api.libs.json.Reads._
import java.util.Date
import java.text.SimpleDateFormat

case class Person(name: String, lastSeen: Date) {      
}

object Person {
  implicit val personLastSeen = new Reads[Person] {
    val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm")
    def reads(js: JsValue): JsResult[Person] = {
      JsSuccess(Person(
        (js \ "name").as[String],
        sdf.parse((js \ "day").as[String] + " " + (js \ "time").as[Float])))
    }
  }
}
object Test extends App {
    val jsonString = Json.parse("""{name: "Joe", day: "2013-03-28", time: "09:35"}""")
}