android - JSON:Jackson 流解析器——真的值得吗?

标签 android json jackson

<分区>

我正在编写的应用程序中大量使用 JSON 解析。我所做的大部分工作已经使用 Android 的内置 JSONObject 库(是 json-lib 吗?)实现了。

JSONObject 似乎创建了 JSON 字符串中绝对所有内容的实例......即使我最终没有使用所有它们。

我的应用目前运行良好,即使在 G1 上也是如此。

我的问题是:使用像 Jackson 这样的流解析器带来的速度和内存优势值得所有的麻烦吗?

麻烦的是,我的意思是:据我所知,使用 Jackson 而不是内置库有三个缺点:

  1. 对外部库的依赖。这最终会使您的 .apk 变大。没什么大不了的。
  2. 您的应用更脆弱。由于解析不是自动完成的,因此它更容易受到正在解析的 JSON 文本更改的影响(也许我对此有误)。
  3. 编写代码通过流解析器解析 JSON 既丑陋又乏味。

最佳答案

在大多数情况下,我也在使用内置的 JSON 解析器,但最近遇到了一个不适合它的场景:对于某些 Web 服务请求,我收到超过 1 MB 的 JSON 文档。使用内置的 JSON 解析器加载这些需要大量的主内存,并多次导致 OutOfMemoryException。对于这些场景,流式解析器是更好的选择(尽管使用起来更不方便),内置的 JSON 解析器不提供流式处理,仅提供类 DOM 样式。

对于任何正在寻找适用于 Android 的流式 JSON 解析器的人,我强烈建议使用 Google's GSON .我一开始尝试过 Jackson JSON,它运行良好,直到我尝试构建我的应用程序的发布版本:ProGuard 报告了几个问题,并且正在运行的应用程序因 Jackson 的 的构造函数中神秘的 NullPointerException 而崩溃>ObjectMapper(尽管在调试版本中一切正常)。即使经过几个小时的尝试,我也无法解决这个问题。然后我切换到 GSON,一切都很顺利。

顺便说一句:GSON 流式 jar 的大小只有 14kB —— 所以没什么好担心的。

关于android - JSON:Jackson 流解析器——真的值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467374/

相关文章:

java - Jackson 中用于数组反序列化的泛型

java - Android Studio:应用退出,但构建没有错误

android - 将sdk导入android studio

java - 我的游戏循环不绘制生成对象

android - 如何在Android中做出这样的摆动效果? (见视频)

java - 如何使用spring mvc将json反序列化为复杂对象?

java - 从 RESTful API 中提取数据以解析为 json 并从 JAVA 中提取数据

mysql - 在 mySql 查询中访问转义的 JSON

javascript - 跨源ajax请求未传递JSON格式的Request Payload

xml - Jackson 或 JAXB,哪个更适合 JSON?