2017-02-07 15 views
2

Am имеющих чертыJson форматировщика для признаков в Play 2,4

trait Role[A, B] { 
    val _id: Option[A] = None 
    val value: Option[List[B]] = None 
    val id: Option[String] = None 
    } 

и класс случая, расширяющего черту

case class User (value1: Option[Role] = None, value2: Option[String] = None) extends Role 

object User { 
implicit val jsonFormatter: Format[User] = Json.format[User] 
} 

И это не компиляция из-за ошибки, «Нет Json formattor для Роль".

Я попробовал несколько примеров, доступных в stackoverflow, на json formatter для черт. Ничто не работает.

ответ

2

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

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

implicit val roleFormat = Json.format[Role] 

к object User

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

Эти макросы полагаются на несколько предположений о тип они работают с:

  • У него должен быть сопутствующий объект, который применяет и применяет методы
  • Возвращаемые типы unapply должны соответствовать типам аргументов метода apply.
  • Имена параметров метода apply должны совпадать с именами свойств, желаемыми в JSON.

Деловые примеры изначально соответствуют этим требованиям. Для дополнительных пользовательских классов или черт вам может потребоваться их реализовать.

+0

Это сработало. Простой и эффективный. Спасибо @Mysterion – sowmiyaksr