Json技术比较


目前主流的Json技术主要有四类:json-libjacksongson以及fast-json

简介

json-lib

项目地址:http://json-lib.sourceforge.net/index.html

json-lib是最早也是应用最广泛是json解析工具,但其需要较多第三方包,如commons-beanutils.jarcommons-collections.jarcommons-lang.jarcommons-logging.jarezmorph.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的应用主要为toJsonfromJson两个转换函数,无需依赖额外的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;


文章作者: semon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 semon !
评论
  目录