В 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 2

1 ответ:

Да, это правильно, так как когда Play пытается сделать форматирование для пользователя, он не знает, как форматировать Role в json.

Вы можете сделать это, сначала добавив что-то вроде:

implicit val roleFormat = Json.format[Role]

К object User

Требования из документации по игре:

Эти макросы основаны на нескольких предположениях о типе, с которым они работают. с :

  • он должен иметь сопутствующий объект, имеющий применяемые и неприменимые методы
  • типы возвращаемых данных для отмены, должен соответствовать аргумент применить метод.
  • имена параметров метода apply должны совпадать с именами свойств, требуемыми в JSON.
Классы прецедентов изначально отвечают этим требованиям. Дополнительные пользовательские классы или черт, возможно, вам придется их реализовать.