Я создал запечатанную черту с некоторыми классами дел, расширяющими ее.
sealed trait Notification
case class A (userId: Int, userName: String) extends Notification
case class B (companyId: Int, companyName: String, managerName: String) extends Notification
После этого я создал объект Уведомления.В этом объекте я успешно пишу метод для EncodeJson [Notification], но не могу написать метод для DecodeJson [Notification].
object Notification {
implicit def NotificationEncodeJson: EncodeJson[Notification] = {
EncodeJson((n: Notification) => n match {
case a: A =>
Json("userId" := a.userId, "userName" := a.userName)
case b: B =>
Json("companyId" := b.companyId, "companyName" := a.companyName, "managerName" := b.managerName)
implicit def NotificationDecodeJson: DecodeJson[Notification] = ???
}