我有一个带有两个子类的抽象类。我希望能够在一种类型(超级)下序列化/反序列化子类,以便更大的类可以在一个字段下具有不同类型的数据。这是场景:
abstract class FooBar {
val kind: String
}
case class Foo(kind: String, name: String) extends FooBar
case class Bar(kind: String, name: String, age: Int) extends FooBar
case class BigClass(name: String, foobar: Foobar)
object BigClass {
implicit def format = (
(__ \ 'name).format[String] and
(__ \ 'foobar).format[FooBar]
}
BigClass.foobar将始终是de / serializable类型,但FooBar不是。我该如何实现呢?