Fastjson2下一个十年高性能的JSON库

1,698 阅读2分钟

fastjson终于在最近进行大版本的升级,发布了v2版本(下面简称fastjson2)。

github.com/alibaba/fas…

下面看一下fastjson2有哪些变化。

1. fastjson2的目标

🚄 FASTJSON2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。

  • 支持JSON/JSONB两种协议
  • 支持全量解析和部分解析
  • 支持Java服务端、客户端Android、大数据场景

对比fastjson,fastjson2支持jsonb、部分解析、以及大数据场景。

2. 如何使用

2.1 jar包的引用

maven

<dependency>
  <groupId>com.alibaba.fastjson2</groupId>
  <artifactId>fastjson2</artifactId>
  <version>2.0.1</version>
</dependency>

gradle

implementation 'com.alibaba.fastjson2:fastjson2:2.0.1'

Tips: fastjson与fastjson2的区别是artifactId不一样。

2.2 接口的使用

fastjson2的接口和fastjson基本上一样,例如我们平时经常使用的类:

  • JSON
  • JSONObject
  • JSONArray
  • JSONPath
  • JSONReader

但是提供对JSONB的支持,新增了JSONB的接口:

  • JSONB

2.3 提供了fastjson v1兼容

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.1</version>
</dependency>

但是官方给了说明:可以使用兼容包,兼容包不能保证100%兼容 。也就是不太建议使用。既然都打算使用v2版本了就不要使用兼容版本了。

3. 性能比较

JDK版本试用了现在常用的三个版本:JDK8、JDK11、JDK17(老中新三代JDK)。对比了fastjson和jackson这两个现在最常用的JSON解析工具。综合官方给出的结论总结如下

  • String解析成JSONObject/JSONArray性能有较大提升,最高fastjson2表现出了两倍于fastjson1的性能
  • String反序列化为JavaBean对象,在这个场景fastjson2相对于fastjson1性能提升了30%的性能,并且在格式化JSON String反序列化为JavaBean对象,fastjson2在3.44倍于fastjson1。效果提升更大

总体来说性能有很大的提升。不同版本的JDK性能的差异不是特别大。

Tips: 性能报告地址github.com/alibaba/fas…

3. 总结

fastjson2的版本才发布不就,从官方给出的测试情况性能有了较大的提升。由于没有经过大规模的生产验证,生产使用和稳定性还有待观察。但是新的版本发布会带来更多的性能的提升同时也会提高集成系统的响应速度。

我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢!

参考资料: