如何序列化scala trait play 2.3.x?

时间:2014-11-05 16:06:17

标签: json scala serialization playframework-2.0 traits

请考虑以下事项:

我有一个特质插件..

trait Plugin {val foo:String, val bar:String}

..和2个案例类plugOne和plugTwo!

case class PlugOne ( override val foo:String, override val bar:String, plugValOne:String ) extends Plugin

case class PlugTwo ( override val foo:String, override val bar:String, plugValTwo:String ) extends Plugin

另一个案例类......

case class PluginCol ( plugins:Seq[Plugin] )

..存储一系列插件。 考虑到我有我的案例类PlugOne和PlugTwo的所有隐式格式,我如何序列化我的PluginCol,因为它有一系列插件特征(没有apply / unapply方法)。 我想要实现的是将一个json版本的PluginCol写入mongoDB集合。

有没有办法解决这样的问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

Serialization是将Objects转换为可以存储的格式,可用于重建对象。

Plugintrait。您无法创建Plugin的对象。要创建Seq[Plugin],您需要创建SequencePlugOne的{​​{1}}。

PlugTwo

如您所见,从上面的代码scala> PluginCol(Seq(PlugTwo("s", "x", "z"), PlugOne("a","b","c"))) res7: PluginCol = PluginCol(List(PlugTwo(s,x,z), PlugOne(a,b,c))) scala> res7.plugins res9: Seq[Plugin] = List(PlugTwo(s,x,z), PlugOne(a,b,c)) 实际上包含案例类PlugOne和PlugTwo的对象。

从您的问题中考虑到您拥有案例类Seq[Plugin]PlugOne的所有隐式格式,序列化对象应该没有任何问题。