我有一个控制器类,我已经放置了一个写入对象来序列化我的用户对象。不幸的是,检索user.getId:
时出错type mismatch; found : Long required: play.api.libs.json.Json.JsValueWrapper
Note: implicit value userWrites is not applicable here because it comes
after the application point and it lacks an explicit result type
这是我的代码:
object UsersController extends Controller {
implicit val userWrites = new Writes[User] {
def writes(user: User) = Json.obj(
"id" -> user.getId,
"username" -> user.getUsername
)
}
def users = Action { implicit request =>
Ok(views.html.users())
}
}
我不确定为什么错误说“注意:隐含值userWrites在这里不适用......”,因为如果我摆脱了user.getId部分,错误就会消失。
我需要做什么才能摆脱这个错误并为我的User类正确创建一个Writes对象。
答案 0 :(得分:2)
Java Long不是Scala Long,Play的Scala JSON序列化程序仅支持Scala类型。您可以通过Long2long
明确转换:
implicit val userWrites = new Writes[User] {
def writes(user: User) = Json.obj(
"id" -> Long2long(user.getId),
"username" -> user.getUsername
)
}