How to Play & Joda:如何通过 Scala 序列化和反序列化 DateTime?
How to Play & Joda: How to serialize and deserialize DateTime by Scala?
我正在使用 Play 2.3.7,Scala 版本 2.11.4。
我有这种class。我想将对象序列化和反序列化为 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])
(解除(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 _)
我收到编译器错误:重载方法值适用于备选方案......
请告知我该怎么做?谢谢!
您不需要编写自己的读/写操作,除非它们不是对称的或者您正在做一些自定义的事情。 Json 有一个格式化方法,它从 case 类 创建一个格式化程序。它也有一些东西的默认格式化程序,包括 Joda DateTime 类.
implicit val personFormatter:Format[Person] = Json.format[Person]
我正在使用 Play 2.3.7,Scala 版本 2.11.4。
我有这种class。我想将对象序列化和反序列化为 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])
(解除(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 _)
我收到编译器错误:重载方法值适用于备选方案......
请告知我该怎么做?谢谢!
您不需要编写自己的读/写操作,除非它们不是对称的或者您正在做一些自定义的事情。 Json 有一个格式化方法,它从 case 类 创建一个格式化程序。它也有一些东西的默认格式化程序,包括 Joda DateTime 类.
implicit val personFormatter:Format[Person] = Json.format[Person]