У меня есть класс контроллера, где я разместил объект записи для сериализации объекта пользователя. К сожалению, произошла ошибка при получении для user.getId:Устранение несогласованности типа с серией Serialization ScalaJson
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, ошибка исчезнет.
Что мне нужно, чтобы избавиться от этой ошибки и правильно создать объект Writes для моего класса User.
Как выглядит «Пользователь»? У 'getId' нет явного типа результата? Похоже, это то, что пытается сказать вам компилятор scala, и в этом случае вы должны предоставить его так: 'implicit Writes [Long]' или все, что может быть разрешено. –
Пользователь java-объект, так что да, он возвращает Long. Вот почему он говорит: «found: Long» –
Тот факт, что 'User' является объектом java, а не scala-объектом, имеет решающее значение, потому что это, скорее всего, корень проблемы. У него проблемы с поиском того, какой тип сериализовать 'user.getId' для. –