Как создать DecodeJson для выбранной черты в Scala с Argonaut? - PullRequest
0 голосов
/ 25 сентября 2018

Я создал запечатанную черту с некоторыми классами дел, расширяющими ее.

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] = ???
}
...