在Android应用程序中序列化和反序列化

时间:2013-09-14 23:57:58

标签: java android serialization save deserialization

我正在为一名同事写一个Android应用程序,跟踪孩子们注册参加足球联赛。我目前无法保存/序列化我的名册,然后再对其进行反序列化。我正在序列化的对象是一个Player对象数组。自定义播放器类实现了serializable,因此它们的数组应该可以序列化(据我所知)。

我的序列化/保存方法:

    String ser = SerializeObject.objectToString(currentRoster.getRosterArray());
    if (ser != null && !ser.equalsIgnoreCase("")) {
        SerializeObject.WriteSettings(this, ser, "playerRoster");  //.dat extension
    } else {
        System.out.println("Object not saved");
        SerializeObject.WriteSettings(this, "", "playerRoster");
    }   

我的反序列化方法:

    String ser = SerializeObject.ReadSettings(this, "playerRoster");
    if (ser != null && !ser.equalsIgnoreCase("")) {
        Object obj = SerializeObject.stringToObject(ser);
        // Then cast it to your object and 
        if (obj instanceof Player[]) {
            // Do something
            loadedRoster = (Player[]) obj;
            System.out.println(loadedRoster[0]);
        }
    }

我在我的应用程序中获得的结果是反序列化时阵列中每个玩家的行话。 我的问题是我是否正确保存和加载数据,或者我忘记了什么。 (我遗漏了一些填充代码和异常处理以保持清洁) 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

当面对(de)序列化或(un)编组的问题时,我转向JAXB以(de)序列化json或xml。我试过了Jackson,但没有得到我想要的结果,尤其是我的xml。杰克逊喜欢为XML设置命名空间(默认为“”),我需要没有。除此之外,它很棒,没有依赖关系,并且它将处理格式良好的XML和JSON,与gsonJSON-java不同。

在阅读使用上述任何一种方法时,Blaise DoughanStaxMan读取任何内容都不会出错。您可以在right here找到有关JAXB的教程。要使用MOXy作为JAXB提供程序,this会显示所有必要的代码和指向您需要知道的任何其他内容(de)序列化/(un)编组对象的链接。