如何序列化和反序列化 Java 中的对象列表?
How to serialize and deserialise list of objects in Java?
我有一个 List<Animal>
,我想将其作为 SOAP 响应发送给客户端,但发送方法需要 byte[]
并在客户端反序列化。
谁能告诉我如何将 List<Animal>
转换为 byte[]
并将 byte[]
转换回 List<Animal>
。
我知道这个网站上有很多这样的问题,但我对答案感到困惑。我尝试了很多,但 none 对我有用。
public static byte[] objectToByteArray(Object obj) throws Exception {
byte[] bytes = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
bytes = baos.toByteArray();
oos.close();
return bytes;
}
public static Object byteArrayToObject(byte[] buffer) throws Exception {
Object ob = null;
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(
buffer));
ob = ois.readObject();
ois.close();
return ob;
}
这取决于动物。如果它是可序列化的,您可以使用 Java 序列化机制 https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html。
我有一个 List<Animal>
,我想将其作为 SOAP 响应发送给客户端,但发送方法需要 byte[]
并在客户端反序列化。
谁能告诉我如何将 List<Animal>
转换为 byte[]
并将 byte[]
转换回 List<Animal>
。
我知道这个网站上有很多这样的问题,但我对答案感到困惑。我尝试了很多,但 none 对我有用。
public static byte[] objectToByteArray(Object obj) throws Exception {
byte[] bytes = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
bytes = baos.toByteArray();
oos.close();
return bytes;
}
public static Object byteArrayToObject(byte[] buffer) throws Exception {
Object ob = null;
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(
buffer));
ob = ois.readObject();
ois.close();
return ob;
}
这取决于动物。如果它是可序列化的,您可以使用 Java 序列化机制 https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html。