Java:object to byte 和byte to object converter(for Tokyo Cabinet)
我需要将对象转换为一个byte []来存储在Tokyo Cabinet的键值存储区中。 当从键值存储中读取数据时,我还需要将字节[]解开为字节。
有没有什么软件包可以帮我完成这个任务? 或者最好的解决scheme来自己实现呢?
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(); }
如果你的类扩展了Serializable
,你可以通过ByteArrayOutputStream
来写和读对象,这就是我通常所做的。
在commons-lang的 SerializationUtils
使用serialize
和deserialize
方法。
你可以看看Hector如何做到这一点,目标是相同的 – 为了从NoSQL数据库中存储/检索,将所有内容转换为byte[]
和从byte[]
中转换, 请参阅这里 。 对于原始types(+ String),有特殊的串行器,否则就是通用的ObjectSerializer
(期望Serializable
,使用ObjectOutputStream
)。 当然,你可以只使用它,但是在序列化的forms中可能会有冗余的元数据。
我想你可以复制整个软件包并使用它。