Tôi đang phát triển một ứng dụng Play và tôi đang cố gắng sử dụng đối tượng DateTime Joda vào lớp chữ của tôi.Cách sử dụng Joda DateTime với Play Json
package model
import org.joda.time.DateTime
import play.api.libs.json._
case class User(name: String, created: DateTime)
object User {
implicit val yourJodaDateReads = Reads.jodaDateReads("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
implicit val yourJodaDateWrites = Writes.jodaDateWrites("yyyy-MM-dd'T'HH:mm:ss.SSSZ'")
implicit val userFormat = Json.format[User]
def main(args: Array[String]) {
val value = Json.parse("{ \"name\" : \"hello\" , \"created\" : \"2015-07-16T20:32:04.046+02:00\" }")
println(Json.toJson(new User("user", new DateTime())))
println(Json.fromJson(value))
}
}
Dựa trên solution này, tôi nhận được lỗi này:
Error:(18, -1) Play 2 Compiler:
/activator-1.3.2/notifier-app/app/model/Test.scala:18: ambiguous implicit values:
both value yourJodaDateReads in object User of type => play.api.libs.json.Reads[org.joda.time.DateTime]
and value userFormat in object User of type => play.api.libs.json.OFormat[model.User]
Tôi đang sử dụng Activator 1.3.2 and Play 2.3.8.
Bạn có thể tư vấn cho tôi không?
Xin cảm ơn trước.
cập nhật
Tôi hiểu có sự mâu thuẫn với giá trị tiềm ẩn trong play.api.libs.json.Reads
implicit val DefaultJodaDateReads = jodaDateReads("yyyy-MM-dd")
Làm thế nào tôi có thể giải quyết vấn đề này?
có thể trùng lặp của [Bộ nối tiếp Joda tùy chỉnh bằng cách sử dụng thư viện JSON của Khung chơi?] (Http: // stackoverflow.com/questions/18255504/custom-jodatime-serializer-sử dụng-play-framework-json-library) –
Vui lòng đọc bài đăng của tôi thay vì trả lời một câu trả lời không tốt. Tôi đã trích dẫn liên kết này vì mã của tôi dựa trên chủ đề này .. – Guillaume