【发布时间】:2018-06-20 21:51:21
【问题描述】:
我使用 play json 库进行简单的 JSON 读写:
val dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
implicit val jodaDateTimeReads: Reads[DateTime] = Reads[DateTime](js =>
js.validate[String].map[DateTime](dt =>
DateTime.parse(dt, DateTimeFormat.forPattern(dateFormat))
)
)
implicit val jodaDateTimeWrites: Writes[DateTime] = new Writes[DateTime] {
def writes(dt: DateTime): JsValue = JsString(dt.toString())
}
我正在尝试使用此 DateTime 来解析我的一个案例类
case class DefaultMessage(timestamp: DateTime)
我在范围内有相应的读写,而对 DateTime 的读写也在范围内:
implicit val defaultMessageReads: Reads[DefaultMessage] = (
(JsPath \ "timestamp").read[DateTime](jodaDateTimeReads)
)(DefaultMessage.apply _)
我收到一条错误消息:
[error] found : org.joda.time.DateTime => com.my.project.messages.DefaultMessage
[error] required: play.api.libs.json.Reads[?]
[error] )(DefaultMessage.apply _)
这意味着什么?我认为 Reads[DefaultMessage] 的签名满足隐式 val defaultMessageReads。我看不出这个 sn-p 有什么问题?
【问题讨论】:
标签: json scala playframework-2.0 case-class