JSON是JavaScript object notation的缩写,是一种轻量级的描述数据的方式,与XML相比,它更小更快更易解析,此外,JSON还具有跨平台的优势。这下面这篇文章我们将要比较7种Java JSON库,我们将测量做Java和JSON对象的相互转换,存取Json对象到文件的速度。
Jackson Library
Jackson是一种“多目的的Java库,它的目标是更快,更轻,更易用”,此外他还提供了3种方法来处理JSON格式
1. 流式API: 能够增量解析/生成JSON
2. 树形模型:在内存中以树形结构来描述JSON文档
3. 数据绑定:JSON与POJO相互转换
Goole-Gson Library
第二个是Gson,它也支持JSON与Java对象的相互转换,并请求支持符合JSON格式的String直接转到JAVA对象而不需要放annotation。
GSON的优点是
1. 提供一个toJson()和fromJson()方法实现JAVA与JSON对象的互转,非常方便
2. 支持JAVA泛型
3. 支持任意复杂的对象
4. allow pre-existing unmodifiable objects to be converted to and from JSON
5. allow custom representation for objects
后面几个JSON库都是无名氏,在下面的图里你会看到他们的名字
基准
我们的测试机器配置为
2.5GHz I5 处理器,Win7 64位,4GB DDR3内存
下面这几幅图画出了集中json库的表现
上图可以看出,序列化和反序列化小数据时,Gson都是最快的
在序列化反序列化大一点的数据时,Gson的成绩倒是不出彩,Jackson表现更好
对于手机用户而言,jar包的大小也很重要,从下图可以看出,Gson jar包相当之小
结论
对于小规模的数据,Gson表现更好,对于大规模数据Jackson更快