我有一个代表 JSON 提要的大字符串。我的应用程序从远程网络服务下载此提要。
问题:
1) 下载 JSON 提要后,我应该将它存储在哪里?现在我将它存储在应用程序首选项中并且工作正常。我只是想知道是否有任何理由不这样做,或者是否有更好/更快的选择,例如内部存储或其他?
2) 当我要在我的 Activity 中显示来自该提要的数据时,我会执行如下操作:
JSONObject jsonObj = new JSONObject(json_string);
JSONArray jsonArr = jsonObj.getJSONArray("root");
for (int m = 0; m < jsonArr.length(); m++) {
....
}
问题是,解析 JSON 提要的第一行有点昂贵。以我当前的大小提要(将来可能会增加),可能需要半秒才能完成,虽然不多,但仍然是一个问题。例如,我单击按钮调用 Activity (以显示数据),这 1/2 秒的停顿很明显而且不好。
为避免这种暂停,我应该在下载提要后立即解析 JSON。那么问题来了,我应该将解析后的 JSON 对象保存在哪里?
i) 我无法将 JSON 对象保存到首选项,因为那里只能存储原始数据。
ii) 我是否应该在我的应用程序每次启动时进行解析,并使我解析的 JSON 对象(我有更多)全局(在应用程序级别)以便我可以从我的所有 Activity 中访问它们?
iii) 或者,我相信我的第三个选择是将 JSON 对象声明为静态的,以便可以从其他 Activity 中轻松访问它们?
执行此操作的最佳方法是什么?
谢谢。
最佳答案
如果速度确实是一个问题,显着加快解析(以及写出)JSON 数据的简单方法是使用 Jackson用于解析 JSON 数据。与 org.json 库(Android SDK 附带)相比,如果您只想解析 map 或列表,它至少快 3-5 倍(http://www.cowtowncoder.com/blog/archives/2009/02/entry_204.html)。 但是,如果您可以将它绑定(bind)到 Java 对象,它会更快并且使用更少的内存。
如果你想保存 JSON 数据,它通常只是序列化为文件,或者数据库中的 BLOB;但除非您真的必须这样做,否则最好只保留从 JSON 数据创建的 Java 对象。
关于android - 处理 JSON 对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309075/