jok*_*okr 3 json scala jackson playframework-2.0 playframework-json
我尝试使用Scala到Json在play 2.0应用程序中序列化我的模型.这是我的代码的样子:
package models
import play.api.libs.json._
case class Task(id: Long, label: String, date: String)
object Task {
...
implicit object TaskFormat extends Format[Task] {
def reads(json: JsValue): Task = Task(
(json \ "id").as[Long],
(json \ "label").as[String],
(json \ "date").as[String])
def writes(t: Task): JsValue = JsObject(Seq(
"id" -> JsNumber(t.id),
"label" -> JsString(t.label),
"date" -> JsString(t.date)))
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,运行应用程序时出现以下错误:
verriding method reads in trait Reads of type (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[models.Task]; method reads has incompatible type
Run Code Online (Sandbox Code Playgroud)
我还没有找到解决方案.api的文档(http://www.playframework.org/documentation/api/2.0/scala/play/api/libs/json/package.html)似乎也暗示了我采取的方法.
有人发现我的错误吗?
非常感谢,
乔尔
错误消息告诉您问题所在:返回类型必须是
play.api.libs.json.JsResult[models.Task]
Run Code Online (Sandbox Code Playgroud)
所以它看起来像你Task直接返回,而不是包装它JsResult.
我不使用Play,但这是编译器试图告诉你的.
那么,鉴于此,问题是什么?如果您查看Play 2.0文档,它会reads返回a T.但是,如果您查看GitHub源代码,您会发现它已更改为JsResult[T]截至2012年8月21日.
因此,您使用的是比人们提出的建议更新的版本.
我不确定较新的API是否在线,但您可以在此处浏览JSON源.
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |