J'ai besoin de convertir des objets en octet [] pour pouvoir les stocker dans le magasin clé-valeur du Cabinet Tokyo. J'ai également besoin de décomposer l'octet [] en un objet lors de la lecture du magasin de valeurs-clés.
Existe-t-il des packages pouvant m'aider dans cette tâche? Ou serait la meilleure solution pour le mettre en œuvre moi-même?
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();
}
Si votre classe s'étend Serializable
, vous pouvez écrire et lire des objets via un ByteArrayOutputStream
, c'est ce que je fais habituellement.
Utilisez les méthodes serialize
et deserialize
dans SerializationUtils
de commons-lang .
Vous pouvez voir comment Hector fait cela pour Cassandra, où l'objectif est le même: tout convertir de et vers byte[]
afin de stocker/récupérer une base de données NoSQL - voir ici . Pour les types primitifs (+ String), il existe des sérialiseurs spéciaux, sinon il existe le générique ObjectSerializer
(attend Serializable
et utilise ObjectOutputStream
.). Vous pouvez bien sûr l’utiliser uniquement pour tout, mais il peut y avoir des métadonnées redondantes dans le formulaire sérialisé.
Je suppose que vous pouvez copier l’ensemble du paquet et vous en servir.