【问题标题】:Playframework scala reading a json date with RFC1123_PATTERN to nscala DateTimePlayframework scala使用RFC1123_PATTERN读取json日期到nscala DateTime
【发布时间】:2016-03-10 16:45:04
【问题描述】:

我正在尝试使用第三方 API 的特定格式读取 json 对象中的日期,为简单起见,我将尽我所能。这是日期

"date_created" -> "Mon, 19 Oct 2015 07:07:03 +0000",

我正在尝试将 json 解析为这样的自定义对象

(JsPath \ "date_created").read[SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US)].map{ response => new com.github.nscala_time.time.Imports.DateTime(response) } and

不工作,但有没有办法让它工作?

谢谢

【问题讨论】:

    标签: json scala nscala-time


    【解决方案1】:

    你应该为 DateTime 定义一个 Reads

    implicit val readDateTime: Reads[DateTime] = new Reads[DateTime] {
      private val format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US)
    
      override def reads(json: JsValue): JsResult[DateTime] = json match {
    
        case JsString(d) => Try(format.parse(d)).map(t => JsSuccess(new DateTime(t))).getOrElse(error(json))
        case _ => error(json)
      }
    
      private def error(json: JsValue) = JsError(s"Unable to parse $json into a DateTime with format EEE, dd MMM yyyy HH:mm:ss z ")
    }
    

    那么你的代码就是

    (JsPath \ "date_created").read[DateTime]
    

    注意: [] 之间的代码必须是类型定义,并且在您的代码示例中看起来就像您尝试发送格式化程序的实例一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多