我需要将对象转换为byte[]以便存储在东京柜子键值存储中。我还需要将byte []反序列化为对象,以便在从键值存储中读取时使用。
是否有任何包可以帮助我完成这个任务?或者最好的解决方案是自己实现?
我需要将对象转换为byte[]以便存储在东京柜子键值存储中。我还需要将byte []反序列化为对象,以便在从键值存储中读取时使用。
是否有任何包可以帮助我完成这个任务?或者最好的解决方案是自己实现?
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
写入和读取对象,这是我通常所做的。
您可以使用ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
ObjectClass object = objectMapper.readValue(data, ObjectClass.class);
byte[]
以便存储/检索 NoSQL 数据库 - 请点击这里。对于基本类型(+String),有特殊的序列化器,否则使用通用的ObjectSerializer
(期望Serializable
并使用ObjectOutputStream
)。当然,您可以仅使用它来处理所有内容,但序列化形式中可能存在冗余元数据。ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
ByteArrayOutputStream out = new ByteArrayOutputStream();
objectMapper.writeValue(out,obj);
byte[] data = out.toByteArray();