我正在为一位同事编写一个 Android 应用程序,用于跟踪 children 报名参加足球联赛的情况。我目前在保存/序列化我的花名册然后再反序列化时遇到问题。我正在序列化的对象是一个 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]);
}
}
我在我的应用程序中得到的结果是反序列化时数组中每个玩家的行话。 我的问题是我是否正确地保存和加载了数据,或者我忘记了什么。 (我省略了一些填充代码和异常处理以使其更清晰) 感谢您的帮助!
最佳答案
当遇到(反)序列化或(反)编码的问题时,我求助于 JAXB (反)序列化 json 或 xml。我试过 Jackson ,但没有得到我想要的结果,尤其是我的 xml。 Jackson 喜欢为 XML 设置命名空间(并且默认为“”),而我不需要我的命名空间。除此之外,它很棒,没有依赖性,它可以处理格式良好的 XML 和 JSON,这与 gson 不同。和 JSON-java .
当阅读有关使用上述任何方法的信息时,阅读 Blaise Doughan 的任何内容都不会出错。或 StaxMan .您可以找到有关 JAXB 的一般教程 right here .要将 MOXy 用作您的 JAXB 提供程序,this显示所有必要的代码和指向您需要知道的任何其他内容的链接,以(反)序列化/(取消)编码您的对象。
关于java - android应用程序中的序列化和反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807555/