android - 处理 JSON 对象的最佳方法是什么?

标签 android json parsing storage preferences

我有一个代表 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/

相关文章:

java - 无法在当前主题 CardView 中找到样式 'cardview style ' 在 Android Studio 3.1.3 中不起作用

javascript - 尝试渲染数组时 react : receiving Uncaught Error: Objects are not valid as a React child,

javascript - fast-csv 同步读取多个文件

android - PreferenceFragmentCompat 不会在 AppCompatPreferenceActivity 中加载 - 尝试实例化一个不是 Fragment 的类

java - 谷歌地图与自定义图像作为特定位置的图标

android - 获取包括操作栏的窗口 View ?

javascript - Electron 不将 json 文件添加到应用程序

android - 检查 JSONObject 键是否存在

c - 在 C 目标中用 antlr3 解析一些特定的语句

python - 使用python将命令解析为另一个软件界面