序列化包含ArrayLists的ArrayList?

时间:2013-12-31 14:39:53

标签: android serialization arraylist

在Android应用程序中,我需要将一些数据保存到A类对象的ArrayList中的文件中.ArrayList中类型A的对象由标准基元对象组成,除了每个A对象还包含一个对象的ArrayList B型。

B对象也由原始数据类型组成。 A类和B类都没有任何特定的代码来实现Serializable。

我的问题是如何将这些数据写入文件。我是否需要添加特定支持来序列化这些对象?我怀疑不是因为它们只包含原始数据类型,但OTOH我怀疑我需要,因为ArrayList本身不是原始类型。

非常感谢指导。我想做最简单的事情。我知道我可以编写自己的JSONSerializer代码,手动序列化A类中的每个字段,并调用B类中的JSON序列化程序代码来序列化ArrayList项,并将其全部填入文件中。我也不想通过SQLLite来运行它。

虽然我在序列化arraylists上发现了许多帖子,但我没有找到嵌套ArrayLists的帖子。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果你想使用Serializable,你应该没有问题,因为ArrayList是Serializable。只要确保你的非原始对象也是Serializable。

答案 1 :(得分:0)

使用ObjectInputStream和ObjectOutputStream,类似于:

public static void saveArrayListToFile(ArrayList<Book> books, String filePath)
{
    ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(filePath)));
    oos.writeObject(books);
    oos.close();
}

// ...

public static ArrayList<Book> loadArrayListFromFile(String filePath)
{
    ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(filePath)));
    try
    {
        return (ArrayList<Book>) ois.readObject();
    }
    finally
    {
        ois.close();
    }
}

请注意,Book类必须实现Serializable接口。我没有测试代码,但它应该工作。您可能需要尝试捕获上面代码中的任何异常。