在Scala中表达自定义的每类de /序列化方法

时间:2013-11-06 03:28:28

标签: json scala serialization

我正在构建一个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的新手 - 表达这个的好方法是什么?我想在他们所代表的类中或附近编写我的序列化/反序列化方法。

0 个答案:

没有答案