2011-06-30 38 views
4

我使用org.json。*库将我的web服务结果(显然是json)转换为json对象。我的问题是,JSONObject和JSONArray构造函数需要很长时间才能构建出对象。我没有传递大量的数据(每个数组有1到100个数组项,每个数组有3-5个键),但即使只有4或5个数据项,构造函数也需要几秒钟才能完成。加速JSON对象

有没有办法加快速度?有没有更快的图书馆,我可以使用?

没有很多代码可以显示。

JSONArray arrayjson = new JSONArray(json); 

其中json是一个字符串。

+0

你的问题几乎肯定与JSON库无关,但是涉及到I/O或其他奇怪的巧合。你能否制作一个能够重现问题的[SSCC示例](http://sscce.org/)? – phihag

+0

请提供一些代码:延迟可能来自变量的不恰当声明和对垃圾回收器的过多调用? – olamotte

回答

3

您可能会试用gson。这个article似乎表明它在Android上的性能相对于其他选择有相当不错的表现。 Jackson可能是另一个不错的选择。

+0

感谢您的回复。我会给gson一个好看,并报告任何改进。 – Andrew

+0

引用的文章包含对该测试的改进版本的引用,其中杰克逊显示出比Android上的Gson快得多。 –

3

根据https://github.com/eishay/jvm-serializers/wiki的性能结果,对于带有字符串的数据绑定(例如gson.toJson(myObject))的序列化,Gson比Jackson慢10倍以上。 FastJSON在同样的测试中击败杰克逊2-3%。反序列化性能相似,Gson的速度比Jackson慢9倍,而FastJSON的速度比Jackson快0.5%左右。

注意:目前的测试结果使用了Gson 1.6。使用Gson 1.7.1,数据绑定的性能比Gson 1.6提高了10-15%(但手动和树形解决方案没有改进)。结果将很快相应更新。

+0

fastJSON的任何示例代码如何使用它。 –