编辑:业余草
来源:https://www.xttblog.com/?p=4982

一、FastJson为何物

首先抄录一段来自官网的介绍:FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

FastJson是Java程序员常用到的类库之一,相信点开这个页面的你,也肯定是程序员朋友。正如其名,“快”是其主要卖点。

二、真的很快吗?

没有调研就没有发言权,本着“追求真理”的初心,来一轮简单的测试。对比对象选择应用最广泛的Jackson和Google出品的Gson。测试环境选择JDK 8,AMD 3700X,3200MHZ内存。简化实验,只测试简单对象和复杂对象的String转对象、对象转String,调用1千万次的对比结果如下(时间单位是毫秒):

从测试结果看,FastJson确实是最快的,但仅比Jackson快20%左右,Google的Gson是最慢的,差距较大。读到这里,是不是觉得选择FastJson肯定没错啊!如果面试官问为什么选择FastJson?因为快!这一个理由就可以把他顶回去了。

这里的调查研究并不是很充分,没有对内存占用、大文档的测试。

在现代应用程序中,即使最慢的Gson,也是满足需求的;解析文档速度的快慢,并不能作为选型的唯一标准,可能连主要标准都算不上。对IO优化,并行处理等优化措施,比选用一个更快的库更有效。

三、FastJson并没有那么流行

然而,FastJson并没有那么流行,有一个最直观的数据,那就是在Maven的中的引用量,和Jackson和Gson不在一个数量级,和Jackson强大的家族更没法比。

难道我用了一个假的流行的国产类库?在知乎看到了一篇帖子,讨论为什么外国友人不喜欢FastJson。结论就是FastJson是个代码质量不高的国产类库。完全颠覆了我的认知,因为在我的项目中,是经常使用FastJson的,并没有出现什么Bug,而且这段评论是在2016年写的。

抱着怀疑的态度,打开FastJson的地址,看到大家提的Issues。竟然有1283个未解决的Issues。红框标识出来的,我自己拿去研究下,因为我看到下面还有人提了一样的问题。

测试代码如下:

果然,在采用了最新版本的类库后,如问题描述的,还是有异常。于是就看到了如下的源代码:

这段代码有严重的逻辑错误,这样错误的格式,例如:

“1970-01-01 00:00:00.000000000.000000000”

或者

“1970-01-01 00:00:00.000000000.000000”

也能转换成功,而一些正确的格式,例如:

““1970-01-01 00:00:00”,““1970-01-01 00:00:00.000”

却转换失败。

结合知乎上网友的点评,我本人也觉得FastJson并没有那么优秀,另一些深入的点评,例如ASM,我的理解并不深,就不做测试了。

四、弃坑fastjson

在我负责的项目中,因为SpringBoot相关的框架中,应用了Jackson,本着“最少依赖”的原则,json解析应用了Jackson。但是很多同事的代码中,也用了Gson和Fastjson,当然,是没有严格规范要求的结果。

通过今天的一个小小研究,Jackson的流行,是有着内在的原因的。在我们以后的项目中,主推Jackson,逐渐的淘汰Fastjson。

为什么 FastJson 火不起来,国外人都不使用?相关推荐

  1. 打印工资条怎么做到每个人都有表头明细_抖音百万点赞!2018年最火的5个Excel骚操作,你都会吗?...

    本文作者丨可可&小植 本文由「秋叶 PPT」原创发布 如需转载,请在公众号发送关键词「转载」查看说明 要说 2018 年掀起全民狂欢的手机应用 毋庸置疑肯定是抖音短视频 App 一打开 App ...

  2. 你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件“dict.txt”,把英文单词译成中文,帮助与人沟通。

    1.你到国外去旅游,那里的人都讲英语,虽然你的英语不怎么好,但你会编程,请编写一段程序,利用文件"dict.txt",把英文单词译成中文,帮助与人沟通. 文件dict.txt是一个 ...

  3. 做跨境电商一年买了房:未来五年的风口行业,90%的人都不知道

    有一句老话常说:"下一个暴利风口来了,将造就大批富翁,抓住就能致富!" 看看朋友圈那些有钱人,几乎都是因为踩对了风口,赚得盆满钵满: 10年前,咬咬牙供几套房,一辈子不愁吃穿: 5 ...

  4. 为什么说编程和英语是每个人都必须掌握的技能?

    我们今天的主题要从奥巴马的一段演讲开始说起. 这段视频是奥巴马2014年应邀为美国在线编程教育网站code.org举办的"编程一小时"活动做的宣传片.为了呼吁美帝人民学习编程知识, ...

  5. 【网络安全】七个最常见的黑客攻击技术,98%的人都遇到过(通俗易懂版)

    前排提示:文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身经历过的网络攻击(建议大家认真看完,这篇文章会刷新你对网络攻防的认知) 前言 在世界人口近80亿的地球上,每天尚且发生数以百万计 ...

  6. 真正优秀的职场人都这样做,你get到了吗?

    本 人在一家公司沉浮八年,说长不长说短不短,也有幸经历了行业的变迁.从所谓的白银时代到现在的后白银时代,身边的同事来来往往见了许多,有些体会,不吐不快.看到一些职场新人,有感于青春易逝,也不希望他们再 ...

  7. 做跨境电商一年买了房:未来五年的风口行业 ,90%的人都不知道 !

    有一句老话常说:"下一个暴利风口来了,将造就大批富翁,抓住就能致富!" 看看朋友圈那些有钱人,几乎都是因为踩对了风口,赚得盆满钵满: 10年前,咬咬牙供几套房,一辈子不愁吃穿: 5 ...

  8. 余承东回应鸿蒙OS十大疑云:人都是被逼出来的

    乾明 发自 东莞  量子位 报道 | 公众号 QbitAI 华为鸿蒙(HarmonyOS)昨日面世,有赞美,更有质疑. 发布会后,华为消费者BG CEO余承东.华为消费者BG软件部总裁王成录,就集中对 ...

  9. [Music]若是每个人都彼此关怀

    Nickelback简介<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" / ...

最新文章

  1. 动态链接库和静态库的区别
  2. apache站点优化—数据压缩
  3. Retrofit2.5是如何解析在接口类中定义的请求方法?
  4. java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园
  5. 预安装CentOS6.5,虚拟机VMware Workstation12配置
  6. 动态域名解析NAT版结合绿盾加密解密软件使用方法
  7. bugzilla dbd-mysql_如何在CentOS 7上安装Bugzilla 5.0.x
  8. VBA学习笔记之单元格
  9. 微信h5使用audio不会自动播放
  10. 小梅哥Xilinx FPGA学习笔记10——串口通信发送
  11. R语言-gsub替换字符工具
  12. ntp校时器(网络对时服务器)自动化系统技术应用方案
  13. 联想笔记本 ThinkPad T440 Wifi无法联网的解决方法
  14. CSS day_04(6.15)背景颜色图片、修饰元素、浮动
  15. java tomcat打印日志级别_修改tomcatlog输出等级
  16. CAD碎片化学习教程 @3. 设置当前字体
  17. 梦幻西游中心服务器,梦幻西游2服务器回忆史——追忆太和殿
  18. npm配置国内镜像(淘宝镜像)
  19. 编程实现多边形的平移、比例(缩放)、旋转、对称和错切等二维仿射变换(大有门道)
  20. OpenPose 2019版总结

热门文章

  1. 【python】灰色预测平均房价趋势kera深度学习库的介绍
  2. MySQL基础知识及其基本相关操作
  3. MyBatis Foreach标签
  4. 1.#_5 macbook pro入门(M1)
  5. 模拟登录之使用cookie
  6. 客服对话框php代码,在线客服对话框
  7. 压缩包需要计算机管理员权限,压缩文件删除不了要访问权限解决方法
  8. 用你的左脑pk右脑,思维导图用哪个?
  9. 运维基本功(五):Linux文件管理-用户管理
  10. ORB-SLAM2梳理——track线程(一)