scala - 如何对嵌套案例对象使用播放格式序列化/反序列化宏
问题描述
所以我有一个像这样的密封特征:
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 之外(到基本包级别),投诉就会消失。
只是想知道这是否是宏中的疏忽(在哪里找不到嵌套的子类),或者我在这里做错了什么?
解决方案
推荐阅读
- .net - 处理方法中的可选参数
- android - react-native-gifted-chat 中的 Android '超级表达式必须为空或函数'
- android - 事件总线 - 创建多个事件
- scalafx - ScalaFX如何关闭二级
- django - dkjango ForeignKey 允许 Null 值
- reactjs - react - renderToNodeStream,让 [Object] 出现在浏览器中
- javascript - 在chart.js中获取线的值是否可以解决?
- reactjs - React native - 仅重新渲染父组件的一部分(性能问题)
- docker - docker instance bridge 使用 9000 端口,使用 127.0.0.1:9000 可以连接但是 192.168.1.145:9000 连接失败,为什么?
- android - 如何将图像、视频和文件等 Android 应用相关数据备份到 Google 云端硬盘