目前主流的Json技术主要有四类:json-lib
、jackson
、gson
以及fast-json
;
简介
json-lib
项目地址:http://json-lib.sourceforge.net/index.html
json-lib
是最早也是应用最广泛是json解析工具,但其需要较多第三方包,如commons-beanutils.jar
、commons-collections.jar
、commons-lang.jar
、commons-logging.jar
、ezmorph.jar
等;
- 缺点:
- 对于复杂类型的转换,
json-lib
对于json转换成bean还存在缺陷,比如一个类中存在另一个类的List或者Map引用就会出现问题,且json-lib
在功能和性能上均已不能满足需求;
- 对于复杂类型的转换,
jackson
项目地址:https://github.com/FasterXML/jackson
jackson
是当前使用比较广泛的序列化和反序列化json的Java开源框架;Jackson
社区相对比较活跃,更新速度也比较快,从Github中的统计来看,jackson
也是当前最流行的json解析器之一,Spring MVC默认的json解析器就是jackson
。
- 优点:
ackson
依赖的jar包较少,简单易用;- 解析大文件速度快;
- 运行时占用内存较低,性能较好;
- 具备灵活的api,方便扩展和定制;
- 缺点:
- 转换复杂类型的bean为json时,转换的json格式不是标准json格式;
- 复杂类型的json转换为bean或者Map/List转换可能存在问题;
gson
项目地址:https://github.com/google/gson
gson
是目前功能最全的json解析神器,gson
最初为Google公司内部需求研发而来,自2008年5月公开发布后被许多公司及用户应用;gson
的应用主要为toJson
与fromJson
两个转换函数,无需依赖额外的Jar包,能够直接运行在JDK上;
- 优点:
- 功能全面,支持各种复杂类型转换;
- 缺点:
- 性能稍弱;
fastjson
项目地址:https://github.com/alibaba/fastjson
fastjson
是一个java语言编写的高性能的json处理器,由阿里巴巴开发;不需要依赖额外的Jar包,能够直接运行在JDK上;
- 缺点:
- 转换复杂类型的bean为json,可能会出现引用类型导致json转换出错;
- 优点:
- 采用独创算法,将
parse
的速度提升到极致,超过所有json库;
- 采用独创算法,将
综上技术对比,在项目选型的时候可选择
gson
+fastjson
并行使用;若只有功能需求,无性能要求,可选择使用
gson
;若存在性能要求,则建议使用gson
将bean转换为json确保数据正确,使用fastjson
将json转换为bean;