2010-05-11 2 views
0

В настоящее время я использую XStream для сериализации некоторых из моих объектов, которые не реализуют Serializable. Есть ли способ сказать XStream использовать сериализацию по умолчанию Java, если объект реализует Serializable и отказывается от сериализации XML, если это не так? Или мне нужно было бы реализовать простой слой поверх него, чтобы проверить?XStream сериализуемые объекты

спасибо, Джефф

ответ

1

Это не было бы хорошей идеей. Сериализация Java - это двоичное представление, XML - текстовое представление.

Возьмите java.lang.String, например. Это реализует Serializable, но, очевидно, вы не захотите, чтобы ваши строки были сериализованы как двоичные капли внутри вашего XML. Аналогично для таких вещей, как числовые типы и т. Д.

У XStream есть механизм регистрации пользовательских преобразователей, я предлагаю вам использовать это. если вы решите сериализовать двоичные данные в свой XML-документ, вам нужно каким-то образом закодировать его, например. с кодировкой Base64.

+0

Хорошее объяснение. На самом деле я не собирался применять это по всему графику объектов. Например, если я попытаюсь сериализовать класс X, и это Serializable, то я бы сериализовал его (и весь его граф объектов) в двоичном файле (поскольку он помечен как Serializable, я также возьму его граф объекта). Если он не помечен Serializable, я бы использовал xml для этого объекта (и весь его граф объекта). Причина в том, что у меня много разных объектов, которые я сериализую для сохранения, но некоторые из них имеют огромные представления для XML и для тех типов данных, которые я предпочитаю хранить в другом формате. –

Смежные вопросы