有没有适用于Android的最佳JSON解析库?我知道Android框架内置了一个JSON库,也听说过GSON。但我想知道是否有人比较过Android上各种JSON选项,并给出了选择其中一种的理由。我认为性能和易用性是主要标准。
有没有适用于Android的最佳JSON解析库?我知道Android框架内置了一个JSON库,也听说过GSON。但我想知道是否有人比较过Android上各种JSON选项,并给出了选择其中一种的理由。我认为性能和易用性是主要标准。
惊喜的是,如果你选择一些更现代的类库,比如Jackson或者最新的org.json源码,你可以轻松避开这些限制。较新版本的Android运行时还提供了一些JSON pull-parsing的实用类。
如果你被困在旧版运行时环境中,并且想要保持应用程序的占用空间,就像我一样,你可以复制来自org.json的JSONTokener,并修改顶层解析循环(在我的情况下是数组解析循环),并对数组的每个成员进行数据绑定,而不是一次性地绑定整个数组。这样你尽可能地重用Android运行时中已有的JSON对象,仍然能够获得流式效果(以每个顶级对象添加ID为代价)。
尝试使用android-async-http:
您还可以尝试使用fastjson,这是一个快速的JSON处理器。
Android JSON功能强大,但没有花哨的功能。而GSON允许您指定类和它们的JSON表示之间的映射。它还具有非常好的自动将任何原始值转换为JSON的功能,无需您额外的工作。
GSON的回报是如果您有大量的JSON通信或需要值检查以防止非法值(例如NaN)和其他情况,其中Java-to-JSON不太直接。
但是,如果您只需要发送和接收简单的JSON对象,则本机库可以相当可靠地完成任务。我正在我的当前项目中使用它来将高分数发布到服务器。
我正在测试GSON并尝试了一些其他的库。
GSON在序列化(将对象转换为JSON)复杂对象方面表现出色,基本上不需要你做任何更改或思考,但速度较慢且占用内存较多。
GSON Roadmap 网站指出他们期望版本2.0解决一些性能问题,并将于2011年10月发布(即将到来)。所以我希望他们能够交付,因为我真的需要它。
其他库(抱歉,现在无法回忆起名称)似乎没有很好地进行序列化。有些可能只查看类中的公共变量或调用看起来像getter/setter的公共方法。Gson不是这样做的,它会获取所有内容。
我还没有在反序列化方面(将JSON转换回Java对象)做过太多工作。