我正在构建一个JSON序列化工具,我希望能够在Scala中定义类的自定义序列化和反序列化方法。不幸的是,由于Scala没有静态方法,我无法找到表达fromJSON
方法的好方法。
我想写的是:
class Foo(val x: Int) extends Serializable {
def toJSON = JInteger(x)
static val fromJSON: PartialFunction[JValue, Foo] = {
JInteger(x) => new Foo(x)
}
}
...但是static
doesn't exist。我可以在伴侣对象中编写静态方法:
object Foo {
val fromJSON: PartialFunction[JValue, Foo] = {
JInteger(x) => new Foo(x)
}
}
class Foo(val x: Int) extends Serializable {
def toJSON = JInteger(x)
}
但是编译器不会检查它是否存在于每个Serializable
类中,如果没有定义错误,错误可能会在运行时出现。
我是Scala的新手 - 表达这个的好方法是什么?我想在他们所代表的类中或附近编写我的序列化/反序列化方法。