В JSON Formatter для того, чтобы черты характера в игре 2.4
У меня есть черта
trait Role[A, B] {
val _id: Option[A] = None
val value: Option[List[B]] = None
val id: Option[String] = None
}
И класс case, расширяющий Признак
case class User (value1: Option[Role] = None, value2: Option[String] = None) extends Role
object User {
implicit val jsonFormatter: Format[User] = Json.format[User]
}
И он не компилируется из-за ошибки "No JSON formattor for Role".
Я попробовал несколько примеров, доступных в stackoverflow, на JSON formatter для черт ничего не работает.
1 ответ:
Да, это правильно, так как когда Play пытается сделать форматирование для пользователя, он не знает, как форматировать
Role
в json.Вы можете сделать это, сначала добавив что-то вроде:
implicit val roleFormat = Json.format[Role]
К
object User
Требования из документации по игре:
Эти макросы основаны на нескольких предположениях о типе, с которым они работают. с :
Классы прецедентов изначально отвечают этим требованиям. Дополнительные пользовательские классы или черт, возможно, вам придется их реализовать.
- он должен иметь сопутствующий объект, имеющий применяемые и неприменимые методы
- типы возвращаемых данных для отмены, должен соответствовать аргумент применить метод.
- имена параметров метода apply должны совпадать с именами свойств, требуемыми в JSON.