Playframework scala 使用 RFC1123_PATTERN 读取 json date 到 nscala



我正在尝试读取具有第三方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

不起作用,但是有没有办法使它起作用?

谢谢

你应该为 DateTime 定义一个读取

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]

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

相关内容

  • 没有找到相关文章

最新更新