gpt4 book ai didi

json - Play Framework 2.2 : No Json deserializer found

转载 作者:行者123 更新时间:2023-12-04 21:43:30 32 4
gpt4 key购买 nike

我的格式、读取和写入方法不起作用,我无法找到问题所在。在我看来
我按预期实现了 Json.format、Json.reads 和 Json.writes。如果我编译我的代码,我会收到以下错误:

No Json deserializer found for type Option[(String, String, String, String, String)]

我的型号:
object User {

val simple = {
get[Option[Long]]("id") ~
get[String]("username") ~
get[String]("email") ~
get[String]("firstname") ~
get[String]("lastname") map {
case id ~ username ~ email ~ firstname ~ lastname => User(
id, username, email, firstname, lastname)
}
}

implicit val userFormatter = Json.format[User]
implicit val userReads = Json.reads[User]
implicit val userWrites = Json.writes[User]

def findById(id: Long): Option[User] = {
DB.withConnection {
implicit connection =>
SQL("select * from \"user\" where id = {id}").on('id -> id).as(User.simple.singleOpt)
}
}
}

我的行动:
def get(id: Long) = Action {
Ok(Json.toJson(User.findById(id).map {
user =>
(user.id.toString, user.username, user.email, user.firstname, user.lastname)
}).getOrElse[String](""))
}

最佳答案

Json.toJson[T](obj: T)采用隐式 Writes[T] (其中 Format[T] 实现)。

然后转换 Option[User]Option[Tuple5[String, String, String, String, String]]并将其提供给 toJson,以便编译器尝试找到这样的格式/写入。可能不是你想要的。

你想要的可能是这样的:

def get(id: Long) = Action {
User.findById(id)
.map(user => Ok(Json.toJson(user)))
.getOrElse(BadRequest(s"Unknown user $id"))
}

关于json - Play Framework 2.2 : No Json deserializer found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118816/

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