Java: объект для байта [] и байт [] для конвертера объектов (для Tokyo Cabinet)
Мне нужно преобразовать объекты в байт [], которые будут храниться в хранилище ключей для магазина Tokyo Cabinet.
Мне также нужно удалить байт [] в объект при чтении из хранилища значений ключа.
Есть ли там пакеты, которые помогут мне в решении этой задачи? Или самое лучшее решение для его реализации?
Ответы
Ответ 1
public static byte[] serialize(Object obj) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(obj);
return out.toByteArray();
}
public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(data);
ObjectInputStream is = new ObjectInputStream(in);
return is.readObject();
}
Ответ 2
Если ваш класс расширяет Serializable
, вы можете писать и читать объекты через ByteArrayOutputStream
, что я обычно делаю.
Ответ 3
Используйте методы serialize
и deserialize
в SerializationUtils
из commons-lang.
Ответ 4
Вы можете посмотреть, как Гектор делает это для Cassandra, где цель - то же самое - конвертировать все в и из byte[]
, чтобы хранить/извлекать из базы данных NoSQL - см. здесь. Для примитивных типов (+ String) существуют специальные Сериализаторы, в противном случае существует общий ObjectSerializer
(ожидающий Serializable
и использование ObjectOutputStream
). Разумеется, вы можете использовать его только для всего, но в сериализованной форме могут быть избыточные метаданные.
Я думаю, вы можете скопировать весь пакет и использовать его.