首页 > 解决方案 > 如何对嵌套案例对象使用播放格式序列化/反序列化宏

问题描述

所以我有一个像这样的密封特征:

sealed trait Foo {

  override def toString: String = {
    ...
  }
}

和一个伴随对象,如:

object Foo {

  case object Bar extends Foo {}

  case object Bat extends Foo {}

  case object Bah extends Foo {}


  def parse(s: String): Foo = {

    ...
  }

  implicit val format: Format[Foo] = Json.format[Foo]

  def apply(f: String): Foo = parse(f)

  def unapply(f: Foo): String = f.toString

}

我本来希望宏能够工作,因为它满足此处所述的所有要求:

https://www.playframework.com/documentation/2.8.x/ScalaJsonAutomated#Requirements

但是,我收到一个编译时错误,指出 Foo 没有子类(即使有 Bar、Bat 和 Bah)。

如果我将 Bar、Bat 和 Bah 移到 Foo 之外(到基本包级别),投诉就会消失。

只是想知道这是否是宏​​中的疏忽(在哪里找不到嵌套的子类),或者我在这里做错了什么?

标签: scalaplayframework

解决方案


推荐阅读