首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PlayFramework 2.1中将Json日期和时间字符串解析为带日期的Case类

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

Stack Overflow用户
提问于 2013-03-28 20:25:23
回答 1查看 1.3K关注 0票数 0

在PlayFramework 2.1中,我想读取json并创建一个case类。结构不同,所以我不能使用默认的阅读器。要将这两个字符串合并到java.util.Date,我需要编写什么内容?

代码语言:javascript
运行
复制
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)

我应该调换这个读数吗?我用dateStructure.parse(...)试过val dateStructure = new SimpleDateFormat("yyyy-MM-dd HH:mm"),但我想我需要一个Reads[Date]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 20:58:58

我认为您不能使用ReadsT组合器做到这一点,但是您可以定义一个特征读取及其方法def read(json: JsValue): JsResult[T]

代码语言:javascript
运行
复制
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"}""")
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15681769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档