序列化/反序列化列表<string> </string>

时间:2012-07-20 08:38:14

标签: java android

我是将字符串的arraylist保存到本地数据库的1列中。我这样做有些问题。有人能告诉我哪里出错了吗?

private String serializeArray(List<String> array) {
    try {
        ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bytesOut);
        oos.writeObject(array);
        oos.flush();
        oos.close();
        return Base64.encodeToString(bytesOut.toByteArray(), Base64.NO_WRAP);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

private ArrayList<String> deserializeArray(String string) {
    Log.d("USERDAO", string);
    try {
        ByteArrayInputStream bytesIn = new ByteArrayInputStream(Base64.decode(string, Base64.NO_WRAP));
        ObjectInputStream ois = new ObjectInputStream(bytesIn);
        return (ArrayList<String>) ois.readObject();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

在deserialise数组上返回Arraylist时,我得到一个空指针异常。 serialiseArray方法确实返回一个字符串,但我不确定它是否正确。

1 个答案:

答案 0 :(得分:0)

当我在eclipse中运行时,我在这一行得到了java.lang.ClassCastException:

return (ArrayList<String>) ois.readObject();

readObject()方法试图返回一个Arrays $ ArrayList(无论是什么),你的演员阵容导致它破坏。如果你将deserialise的强制转换和返回类型更改为List,你会发现它一切正常。