【问题标题】:How to serialize and deserialise list of objects in Java? [duplicate]如何序列化和反序列化 Java 中的对象列表? [复制]
【发布时间】:2015-06-12 20:24:18
【问题描述】:

我有一个 List<Animal>,我想将它作为 SOAP 响应发送给客户端,但发送方法需要 byte[] 并在客户端中反序列化。

谁能告诉我如何将我的List<Animal> 转换为byte[] 并将byte[] 转换回List<Animal>

我知道这个网站上有很多这样的问题,但我对答案感到困惑。我尝试了很多,但没有一个对我有用。

【问题讨论】:

  • 我试过了。它仅适用于单个对象或多个对象,但不适用于 List 等嵌套对象
  • 我再次尝试了您建议的代码。它抛出 java.lang.ClassCastException: [B cannot be cast to java.util.List

标签: java serialization stream


【解决方案1】:

这取决于动物。如果它是可序列化的,您可以使用 Java 序列化机制 https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html

【讨论】:

    【解决方案2】:
    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;
    }
    

    【讨论】:

    • 你必须解释你的代码以便更好地理解。
    • baos.close() 在这里是多余的。
    • 谢谢!@EJP,更新了!
    最近更新 更多