常用JSON库学习整理
Posted 默慊$
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用JSON库学习整理相关的知识,希望对你有一定的参考价值。
日常开发中,我们在前后台或不同系统的数据传输中经常使用JSON来作为数据载体,一则是容易解析,二则使用简单,今天来分享下对几个常用的JSON库的使用理解,也可以作为学习整理的资料方便查阅:
一、Gson
Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,但自从在2008年五月公开发布第一版后已被许多公司或用户应用。 Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。 在使用这种对象转换之前,需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。 类里面只要有get和set方法,Gson完全可以实现复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
二、FastJson
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。无依赖,不需要例外额外的jar,能够直接跑在JDK上。 FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。 FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
三、Jackson
Jackson是当前用的比较广泛的,用来序列化和反序列化json的Java开源框架。Jackson社区相对比较活跃,更新速度也比较快, 从Github中的统计来看,Jackson是最流行的json解析器之一,Spring MVC的默认json解析器便是Jackson。
四、使用理解分析
先说两个概念:序列化和反序列化
把对象转换为字节序列存储于磁盘或者进行网络传输的过程称为对象的序列化。
把磁盘或网络节点上的字节序列恢复到对象的过程称为对象的反序列化。基本流程为:
- 首先,构建通用序列化基础方法所需要的参数类型对象;
- 其次,对序列化类型进行分析,根据注解或者”get方法名(比如getXxx,isXxx)”等来构建需要序列化的属性
- 然后,通过反射机制分别对所有的序列化属性进行处理:通过发现拿到对应的值,getxxx方法等
- 拼接字符串:其内部是根据类型写入一些开始结束符号,例如,[等,在其中嵌入步骤3的解析设值
- 返回最后得到的字符串内容
我们在使用的过程中其实就一直在进行序列化与反序列化,那么在选择合适的JSON库时,我们可以把它们序列化和反序列化的性能作为选取的一项重要依据,测试发现:
1、序列化次数比较小的时候,Gson性能最好,当不断增加至100000的时候,Gson明显弱于Jackson和FastJson, 这时候FastJson性能最好,另外不管数量少还是多,Jackson一直表现优异
2、反序列化的时候,Gson、Jackson和FastJson区别不大,性能都很优异
快去根据自己的业务需要选择合适的JSON库吧!
以上是关于常用JSON库学习整理的主要内容,如果未能解决你的问题,请参考以下文章