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

2024-02-13

我有一个代表 JSON feed 的大字符串。我的应用程序从远程网络服务下载此提要。

问题:

1) 下载 JSON feed 后,我应该将其存储在哪里?现在我将其存储在应用程序首选项中并且工作正常。我只是感兴趣是否有任何理由不这样做,或者是否有更好/更快的选择,例如内部存储或其他东西?

2)当我要在我的活动中显示此提要的数据时,我会执行以下操作:

JSONObject jsonObj = new JSONObject(json_string);
JSONArray jsonArr = jsonObj.getJSONArray("root");
for (int m = 0; m < jsonArr.length(); m++) {
    ....
}

问题是,解析 JSON feed 的第一行有点昂贵。以我目前的提要大小(将来可能会增长),可能需要半秒才能完成,虽然不多,但仍然是一个问题。例如,我单击按钮来调用活动(以显示数据),这 1/2 秒的暂停很明显并且不好。

为了避免这种停顿,我应该在下载 feed 后立即解析 JSON。那么问题是,我应该在哪里保存解析后的 JSON 对象?

i) 我无法将 JSON 对象保存到首选项,因为那里只能存储原始数据。

ii) 我是否应该在每次应用程序启动时进行解析,并将解析后的 JSON 对象(我有更多)设为全局(在应用程序级别),以便我可以从所有活动中访问它们?

iii) 或者,我相信我的第三个选择是将 JSON 对象声明为静态,以便可以从其他活动轻松访问它们?

做这个的最好方式是什么?

THX.


如果速度确实是一个问题,那么显着加快解析(以及写出)JSON 数据的简单方法是使用Jackson http://jackson.codehaus.org用于解析 JSON 数据。与 org.json 库(Android SDK 附带的)相比,如果您只想解析地图或列表,它至少快 3 - 5 倍(http://www.cowtowncoder.com/blog/archives/2009/02/条目_204.html)。 但如果您可以将它绑定到 Java 对象,它会更快并且使用更少的内存。

如果您想保存 JSON 数据,通常只需将其序列化为文件或数据库中的 BLOB;但除非确实有必要,否则最好只保留从 JSON 数据创建的 Java 对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 JSON 对象的最佳方法是什么? 的相关文章

随机推荐