【问题标题】:How to serialize scala trait play 2.3.x?如何序列化 scala trait play 2.3.x?
【发布时间】:2014-11-05 16:06:17
【问题描述】:

考虑以下几点:

我有一个 trait 插件..

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,因为它具有 Plugin 特征序列(没有应用/取消应用方法)。 我想要实现的是将 json 版本的 PluginCol 写入 mongoDB 集合。

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

提前致谢

【问题讨论】:

    标签: json scala serialization playframework-2.0 traits


    【解决方案1】:

    Serialization 是将Objects 转换为可存储并可用于重构对象的格式。

    Plugin 是一个trait。您不能创建Plugin 的对象。要创建Seq[Plugin],您将创建PlugOnePlugTwoSequence

    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))
    

    从上面的代码可以看出,Seq[Plugin]实际上包含了案例类PlugOne和PlugTwo的对象。

    考虑到您的案例类PlugOnePlugTwo 的所有隐式格式的问题,序列化对象应该没有任何问题。

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多