gpt4 book ai didi

json - 使用 Play Scala api 和 Json 序列化对象

转载 作者:行者123 更新时间:2023-12-01 10:03:03 31 4
gpt4 key购买 nike

我尝试在 play 2.0 应用程序中使用 Scala 将我的模型序列化为 Json。这是我的代码的样子:

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)))
}
}

不幸的是,我在运行应用程序时遇到以下错误:

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

我还没有找到解决方案。 api ( http://www.playframework.org/documentation/api/2.0/scala/play/api/libs/json/package.html) 的文档似乎也暗示了我采用的方法。

有人发现我的错误吗?

非常感谢,
乔尔

最佳答案

错误信息告诉你问题是什么:返回类型必须是

play.api.libs.json.JsResult[models.Task]

所以在我看来您是直接返回 Task,而不是将其包装在 JsResult 中。

我不使用 Play,但这是编译器试图告诉你的。

那么,鉴于此,问题是什么?如果您查看 Play 2.0 文档,它说 reads 返回一个 T。但是如果你看the GitHub source您会发现自 2012 年 8 月 21 日起,它已更改为 JsResult[T]

所以你使用的版本比人们写的建议版本更新。

我不确定更新的API是否上线,但是你可以浏览JSON源here .

关于json - 使用 Play Scala api 和 Json 序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033589/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com