【问题标题】:How to Play & Joda: How to serialize and deserialize DateTime by Scala?How to Play & Joda:如何通过 Scala 序列化和反序列化 DateTime?
【发布时间】:2015-04-28 20:18:46
【问题描述】:

我正在使用 Play 2.3.7,Scala 版本 2.11.4。

我有这样的课。我想将对象序列化和反序列化为 json 以及从 json 到对象。

             case class Person(var id: Int = 0,
                  var first_name: String = "",
                  var last_name: String = "",
                  var email: String = "",
                  var date_of_birth: DateTime = new DateTime())

阅读文档后,我发现我需要自己的隐式读写器。所以我尝试如下:

implicit val personWrites: Writes[Person] = (
  (__ \ "id").write[Int] ~
  (__ \ "first_name").write[String] ~
  (__ \ "last_name").write[String] ~
  (__ \ "email").write[String] ~
  (__ \ "date_of_birth").write[DateTime])

(unlift(Person.unapply))

 implicit val userReads: Reads[Person] = (
(__ \ "id").read[Int] ~
  (__ \ "first_name").read[String] ~
  (__ \ "last_name").read[String] ~
  (__ \ "nickname").read[String] ~
  (__ \ "date_of_birth").read[DateTime] 
 )(Person.apply _)

我得到编译器错误:重载的方法值适用于替代品......

请告诉我该怎么做?谢谢!

【问题讨论】:

  • 这是为我编译的。确切的错误信息是什么?您是否在 Person 伴随对象中定义了 apply 方法?

标签: json scala serialization playframework deserialization


【解决方案1】:

您不需要编写自己的读/写,除非它们不是对称的或者您正在做一些自定义的事情。 Json 有一个从案例类创建格式化程序的格式化方法。它还具有一些默认格式化程序,包括 Joda DateTime 类。

implicit val personFormatter:Format[Person] = Json.format[Person]

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多