Fastjson和Gson解析库比较及选择

一、常用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耗时

耗时比

1006415511.16
20011919701.23
300178614451.235
400239319111.25
500303825501.19
1000605450621.195
200012647110441.145
300022488179231.25
400030385241781.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值