Простая сериализация Scala? - PullRequest
9 голосов
/ 09 ноября 2011

Я бы хотел сериализовать в Scala - я видел подобные sjson и аннотацию @serializable - однако я не смог понять, как заставить их иметь дело с 1серьезное препятствие - тип Erasure и Generics в библиотеках.

Возьмем, к примеру, График для библиотеки Scala .Я активно использую его в своем коде и хотел бы записать несколько объектов, содержащих графы, на диск по всему коду для последующего анализа.Однако, много раз типы узлов и ребер инкапсулированы в аргументы универсального типа другого класса, который у меня есть.Как правильно сериализовать эти классы, не модифицируя саму библиотеку для отражения или «испачкать» мой код, импортировав большое количество типов классов (сериализация в зависимости от того, как объект просматривается, совершенно не удовлетворяетв любом случае ...)?

Пример,

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

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

Ответы [ 2 ]

5 голосов
/ 11 ноября 2011

Чтобы сообщить о моих выводах, Java XStream делает феноменальную работу - все и вся, универсальные или иные, могут быть автоматически сериализованы без какого-либо дополнительного ввода. Если вам нужен быстрый и простой способ начать сериализацию, XStream - это!

Однако, следует отметить, что выходной XML не будет особенно кратким без вашего собственного ввода. Например, каждый блок памяти, используемый HashMap от Scala, будет записан, даже если большинство из них ничего не содержат!

2 голосов
/ 09 ноября 2011

Если вы используете Графики для Scala и если JSON является вашим форматом сериализации, вы можете напрямую использовать graph-json.

Вот код и документ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...