一、常用json解析库比较及选择
1.简介
fastjson和gson是目前比较常用的json解析库,并且现在我们项目代码中,也在使用这两个解析库。
fastjson 是由阿里开发的,号称是处理json效率最高的框架。而gson 是由google开发的,是功能比较全面的json解析工具。
2.比较
下面根据体积、性能、调用方式、文档完备程度等几个方面,来比较一下这两个库。
2.1 包体积
都使用当前最新版本的jar包,fastjson-1.1.56.android.jar 为209.7kb,gson-2.8.0.jar 为232kb。
两者体积相差不大,都很小。
2.2 性能
因为fastjson号称是效率最高的框架,这部分网上有很多人讨论,看了一些关于性能比较的帖子
Gson、FastJson、org.JSON到底哪一个效率更高,速度更快
FastJSON、Gson和Jackson性能对比
Android总结之json解析(FastJson Gson 对比)
自己也写了简单的程序,使用最新版本的两个库测试。
测试方法为定义一个简单的类 Example,并生成List<Example> 实例,分别使用两个类库执行 object => string 和 string => object 操作 10 次,计算消耗时间(毫秒)。
list count
gson耗时
fastjson耗时
耗时比
100 641 551 1.16 200 1191 970 1.23 300 1786 1445 1.235 400 2393 1911 1.25 500 3038 2550 1.19 1000 6054 5062 1.195 2000 12647 11044 1.145 3000 22488 17923 1.25 4000 30385 24178 1.26
考虑到移动端的实际使用场景,没有继续再测试更大数据量的耗时,上述时间也与设备性能和数据结构的复杂性有关。根据上述数据来看,确实fastjson比gson快了20%左右。
2.3 调用方式
只比较最简单的由object=>string 和 string=>object 的操作,两者都非常简便
2.4 文档完备程度
相对来说,fastjson的文档很少,从github上,能找到一篇 简单的示例代码 和一篇 常见问题解答 。没有比较全面的使用指南。
而gson的文档就丰富的多了,包括 api , 使用指南 , 以及第三方写的使用指南的链接 Gson Tutorial , Gson Tutorial Series 等。
2.5 流行程度
gson远比fastjson流行,使用的人群更多。无论是在google上搜索fastjson/gson关键词,还是在stackoverflow上搜索两者相关的提问,两者都存在数量级上的差距。
3.结论
通过两者比较,虽然在性能上fastjson比gson更优,但在我们具体的业务场景下,一般只会涉及到小数据量的解析操作,gson并不会比fastjson额外耗费太多的解析时间。
另外,从文档完备程度和解析库的流行程度来说,gson文档相对更完善,对开发人员比较友好。另外更广泛的使用人群,也方便开发人员更容易解决或规避使用中会出现的问题。
再有,个人感觉fastjson的一些特性相对gson来说,并不是太好,比如 对所有的getter方法对应的属性,都做处理 , 忽略大小写 。 以及在编写demo时感觉,fastjson相对gson来说,对代码有更多要求,相对来说感觉gson更傻瓜一些。以上内容来自南哥
由于fastjson缓冲机制,以下调用方式有内存溢出隐患
@Override protected BaseBean<BlockModel> parse(String sourceData) throws Exception { return JSON.parseObject(sourceData, new TypeReference<CommonListResponse<BlockModel>>(){}); } 建议改成: private final static TypeReference<CommonListResponse<BlockModel>> type = new TypeReference<CommonListResponse<BlockModel>>(){}; @Override protected BaseBean<BlockModel> parse(String sourceData) throws Exception { return JSON.parseObject(sourceData, type); }
转载于:https://my.oschina.net/u/3336230/blog/1510536