【问题标题】:Optimization of JSON parsing on AndroidAndroid上JSON解析的优化
【发布时间】:2011-07-12 14:44:44
【问题描述】:

我正在开发一款适用于 Android 的应用,该应用需要从 JSON 提要中获取大量数据。此提要是一个单行 JSON 文件,权重约为 400 ko,包含我需要获取的大约 10 个数组。

我正在使用适用于 Android 的 JSON 库来执行此操作,并且输出效果很好,但计算需要很长时间(嗯,大约 30 秒)。下载步骤很快完成,创建的 JSON 对象似乎很长。这是我的步骤(删除 try/catch 块等)。

JSONObject feed = new JSONObject(big_string_from_feed);

JSONArray firstArray = feed.getJSONArray("key1");
JSONArray secondArray = feed.getJSONArray("key2");

[...]

在我遍历所有数组以通过以下方式获取每个元素之后:

for (int currentIndex =0;currentIndex<firstArray.length();currentIndex++){
    JSONObject myObject = firstArray.getJSONObject(currentIndex);
    [....]
}

我这样做的方式有问题吗?有更好的方法吗?

非常感谢您。

【问题讨论】:

标签: android json parsing


【解决方案1】:

如果性能是一个问题,请使用 Jackson。有关性能结果,请参阅https://github.com/eishay/jvm-serializers/wiki。 (这些结果应该很快更新以包括 Jackson 手动/树字符串处理,其性能介于 Jackson 手动和 Jackson 数据绑定字符串处理之间。手动/树字符串处理是原始问题中演示的方法。)

【讨论】:

  • 再次感谢,我也试试。
  • 确实,杰克逊很厉害。流式 API 还允许直接解析来自输入流的内容。
【解决方案2】:

查看 json-simple(参见 http://code.google.com/p/json-simple)。它提供对 JSON 流的 SAX 样式解析,并且速度更快。

【讨论】:

  • 谢谢,我会检查这个解决方案。
猜你喜欢
  • 2012-08-26
  • 2015-02-04
  • 2015-05-15
  • 2013-10-17
  • 2019-08-25
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多