Easy Scala序列化?

duc*_*thd 9 serialization scala

我想在Scala中进行序列化 - 我已经看过像sjson和@serializable注释这样的东西 - 但是,我一直无法看到如何让它们处理一个主要障碍 - 类型擦除和泛型库.

Scala库的Graph为例.我在我的代码中大量使用它,并希望在我的代码中编写几个将图形保存到磁盘的对象,以便以后进行分析.但是,很多时候节点和边缘类型都封装在我拥有的另一个类的泛型类型参数中.如何正确地序列化这些类,而无需修改库本身以处理反射或通过导入大量类型类来"弄脏"我的代码(根据查看对象的方式序列化完全不满意......)?

例,

class Container[N](val g: Graph[N,DiEdge]) {
   ...
}

// in another file
def myMethod[N](container: Container[N]): Unit = {
   <serialize container somehow here>
}
Run Code Online (Sandbox Code Playgroud)

duc*_*thd 5

为了报告我的发现,Java的XStream做了非凡的工作 - 任何东西,所有东西,泛型或其他,都可以自动序列化而无需任何额外的输入.如果您需要快速且无需工作的方式来进行序列化,那就是XStream!

但是,应该注意的是,如果没有您自己的输入,输出XML将不会特别简洁.例如,Scala的HashMap使用的每个内存块都将被记录,即使它们中的大多数都不包含任何东西!