Итак, я недавно начал изучать Scala. Извините за мою некомпетентность заранее.Сериализация объектов Json Scala в структуре Play2.2.1
Я попытался найти ответ на stackoverflow. Мне удалось найти несколько связанных тем, но я не заметил своей проблемы.
Я пытаюсь отправить ответ json на основе объекта Scala. У меня есть Action, и я делаю следующее:
def oneCredential = Action {
val cred = Credential("John", "Temp", "5437437")
Ok(Json.toJson(cred))
}
Я создал класс дела и соответствующие неявные Записывает [T] Из-за этого
import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.libs.json.util._
case class Credential(name: String, account: String, password: String)
object Credential{
implicit val credentialWrites = (
(__ \ "name").write[String] and
(__ \ "account").write[String] and
(__ \ "password").write[String]
)(Credential)
}
Когда я пытаюсь запустить эту , У меня есть следующая ошибка: «Перегруженное значение метода [apply] не может применяться к (models.Credential.type)». Кроме того, я пробовал это
implicit val credentialWrites = (
(__ \ "name").write[String] and
(__ \ "account").write[String] and
(__ \ "password").write[String]
)(Credential.apply _)
Ошибка. Ошибка: не удалось найти неявное значение для параметра фу: play.api.libs.functional.Functor [play.api.libs.json.OWrites]
Тогда это:
implicit val credentialWrites = (
(__ \ "name").writes[String] and
(__ \ "account").writes[String] and
(__ \ "password").writes[String]
)(Credential)
Другой провал: " Значение write не является членом play.api.libs.json.JsPath. Примечание: неявное значение credentialWrites здесь не применимо, потому что оно появляется после точки приложения и в нем отсутствует явный тип результата ». Правильно, я понял первую часть ошибки, но не вторую.
Наконец я нашел стенограмму решение:
implicit val credentialWrites = Json.writes[Credential]
С этим у меня нет никаких ошибок, и код, наконец, работал. Я нашел решение на этом blog. Говорят, что сокращенная форма точно такая же, как у «с надписью» выше. Но эта «длинная» форма не работала для меня.
Почему сокращенная версия работает, а длинная - нет? Может ли кто-нибудь объяснить это?
Спасибо!
PS Scala версия: 2.10.2
спасибо. – Semuserable