2

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

我的序列化/保存方法:

    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]);
        }
    }

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

4

1 回答 1

0

当面临(反)序列化或(取消)编组的问题时,我求助于JAXB来(反)序列化 json 或 xml。我试过Jackson,但没有得到我想要的结果,尤其是我的 xml。Jackson 喜欢为 XML 设置名称空间(默认为“”),而我不需要我的。除此之外,它很棒,没有依赖关系,它可以处理格式良好的 XML 和 JSON,这与gsonJSON-java不同。

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

于 2013-09-15T03:26:00.880 回答