case class User(username:String, birthday:org.joda.time.DateTime)
object User {
implicit val yourJodaDateReads = Reads.jodaDateReads("yyyy-MM-dd'T'HH:mm:ss'Z'")
implicit val yourJodaDateWrites = Writes.jodaDateWrites("yyyy-MM-dd'T'HH:mm:ss'Z'")
implicit val userFormat = Json.format[User]
}
3条答案
按热度按时间liwlm1x91#
有一个默认的DateTime序列化器,但它使用dt.getMillis而不是.toString,后者将返回符合ISO的String。
如果您查看the source,
Reads.jodaDateReads
已经使用DateTimeFormatter.forPattern
处理数字和字符串。如果你想处理ISO8601字符串,只需将其替换为ISODateTimeFormat
:(根据需要简化,例如:删除号码处理)
zf9nrax12#
我使用Play 2.3.7并在同伴对象中定义了字符串模式的隐式读/写:
xzv2uavs3#
另一种可能更简单的解决方案是绘制一张Map,例如:
更新
如果你经常需要这种转换,那么你可以创建自己的隐式转换,它只是几行代码: