替换标准的Android JSON解析器以获得更好的性能?

9

我知道Android内置了JSON解析器,但我想知道是否值得使用性能更好的工具(比如Jackson - 参见http://jackson.codehaus.org/)?有人尝试过吗?


我从未遇到过Android的JSON解析器速度方面的问题。我甚至在我的一个应用程序中有一个41kb的JSON文件,在G1上加载只需要几百毫秒(这很好,因为它只需要在应用程序启动时运行一次)。 - Dan Lew
绝对的语速可能是可以接受的。但需要考虑到,在普通的桌面CPU上,JSON解析速度大约在数十兆的范围内——41kb的文件只需几毫秒即可完成。即使考虑到较慢的Android系统CPU,相对于快速的替代方案,一百毫秒也是相当慢的。因此,选择正确的工具来完成任务非常重要。对于一般用途(比如在启动时读取配置文件),内置处理程序通常足够好用。但仍然需要知道,如果使用情况需要,还有改进的空间。 - StaxMan
5个回答

7

好的,这里有一些比较Jackson JSON性能与现有JSON、SAX和Protocol Buffers的链接。根据作者所说,Jackson比SAX或内置JSON更快,与Protocol Buffers差不多。最后一部分听起来有点可疑,但无论如何,Jackson肯定可以在Android上使用,并且可能值得一些实验。

我没有检查JAR文件的大小。如果它很大,除非你迫切需要额外的JSON性能,否则可能不值得占用空间。


是的,文件大小绝对是我可能遇到的限制之一。我猜如果我的应用程序需要处理大量的JSON数据,那么添加Jackson库可能会很有价值,但现在我还是坚持使用标准的JSON库。 - Eno

6

谢谢!我没有注意到那里有,因为它不在JSON包中。 - christophercotton
编辑:如果您想获得最佳性能,那么 Protocol Buffers 是您需要的。 - rds

4

虽然回答晚了,但希望还能有所帮助。我使用Jackson来解析Twitter的JSON数据,并将Maps持久化到数据库中。Jackson的数据映射功能非常出色。能够直接将JSON映射到对象上非常棒,让一切变得更加简洁。

即使您只是解析简单的回复数据,数据映射也可以帮助您使代码更加清晰(和高效)。对于我来说,这是一个福音,因为我不必为每种类型的Twitter api函数编写解析逻辑。


感谢您的反馈 - 如果需要,拥有另一个工具是非常好的。 - Eno

0

关于这些解析器,我想提供另一个视角。我在查看2009年的Google IO时发现了一次非常好的关于应用程序开发者如何高效使用电池的讲座。

以下是该讲座的链接:link

现在根据讲座所说,Android内置的解析器是基于树形结构的,而这种结构在节能方面效率较低。有没有人真正研究过这个问题呢?

通过阅读这个讨论,似乎Jackson解析器在所有方面都是赢家。它几乎和内置解析器一样快,而且它是事件/流式的,而不是基于树形结构的,这在节能方面更好。

这只是我想分享并听取一些意见的想法。


0

我使用Jackson json在我的Android应用中实现与服务器通信的json-rpc。我想使用它来序列化/反序列化json-rpc请求和响应以及对象来传输数据。 我使用Jackson-json的2.0版本。我已将jackson-databind-2.0.0.jar,jackson-core-2.0.0.jar和jackson-annotations-2.0.0.jar两个jar放入构建路径中。

另外一件事:是否有适用于Android的json-rpc实现。分离的json-rpc和http流量会很好。我搜索了很多,但没有找到好的json-rpc生成器、json序列化器/反序列化器,对于传输我将使用android-query。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接