首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >弃坑 FastJson,不香了

弃坑 FastJson,不香了

作者头像
二哥聊运营工具
发布于 2021-12-17 10:59:42
发布于 2021-12-17 10:59:42
4810
举报
文章被收录于专栏:程序员泥瓦匠程序员泥瓦匠

一、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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么要强制弃坑Fastjson而主推Jackson?
点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 来源:toutiao.com/i6815906868183958027 一、FastJson为何 二、真的很快吗? 三、FastJson并没有那么流行 四、弃坑fastjson ---- 一、FastJson为何 首先抄录一段来自官网的介绍:FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 Fa
程序猿DD
2023/04/04
1.4K0
为什么要强制弃坑Fastjson而主推Jackson?
为什么我们公司强制弃坑FastJson了?主推Jackson~
作者:咔咔侃技术 来自:toutiao.com/i6815906868183958027
良月柒
2020/11/06
2.5K0
为什么我们公司强制弃坑FastJson了?主推Jackson~
FastJson 又被爆出漏洞,是时候抛弃了
2020年05月28日, 360CERT监测发现业内安全厂商发布了Fastjson远程代码执行漏洞的风险通告,漏洞等级:高危。
开发者技术前线
2020/11/24
8660
FastJson 又被爆出漏洞,是时候抛弃了
经过多方调研,最终还是决定禁用FastJson
老项目中使用到多种json类库,没有统一管理。最近开启全新的项目,准备对json类库进行统一,这样不仅能够压缩jar包的大小,也能够避免某个类库的漏洞导致系统问题。
程序新视界
2021/03/02
2.4K0
经过多方调研,最终还是决定禁用FastJson
fastjson这么快,为啥老外还是热衷 jackson?
1、你写个bean,然后属性里分别有包含_(下划线开头、#开头)之类的属性,序列化为json时,出现属性丢失,那么自然你也无法反序列化回来。
搜云库技术团队
2020/02/19
7180
Fastjson到了说再见的时候了
各位小伙伴大家好,我是A哥。停更1个月后回归啦,今天咱们聊聊一个比较有意思的话题:是否真的需要跟Fastjson说再见了?
YourBatman
2020/07/20
9390
Fastjson到了说再见的时候了
大型项目废弃fastjson迁移至Gson保姆级攻略
在被大家取关之前,我立下一个“远大的理想”,一定要在这周更新文章。现在看来,flag有用了。。。
蛮三刀酱
2021/01/13
1.9K0
经过性能对比,我发现温少的FastJson真牛。
JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。
Spark学习技巧
2019/06/18
6.9K0
经过性能对比,我发现温少的FastJson真牛。
Java 几种常用 JSON 库性能比较
本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库。但是百闻不如一见,只有自己亲手测试过的才是最值得相信的。
冯杰宁
2019/06/19
1K0
又遇fastjson漏洞
又是fastjson!又是这家伙!至少经历了2次+这样的场景。我不知道这家伙又得罪了哪位大仙,频繁被“黑”。fastjson到底做错了什么?为什么会被频繁爆出漏洞?但是作为一个技术人(兴趣爱好者),我更关注的是它为什么会频繁被爆漏洞?而其他的Gson却没有。通过对fastjson的releaseNote以及部分源代码进行查阅,发现此现象跟fastjson中的一个AutoType特性有关联。
Luga Lee
2021/12/09
1.2K0
又遇fastjson漏洞
Fastson 等等,四种 Java 常用 JSON 库性能比较
本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库。但是百闻不如一见,只有自己亲手测试过的才是最值得相信的。
芋道源码
2019/07/23
1.7K0
Fastson 等等,四种 Java 常用 JSON 库性能比较
三款主流的 JSON 解析库性能大比拼,到底谁最牛?
Github地址:https://github.com/alibaba/fastjson
开发者技术前线
2021/07/23
2.2K0
三款主流的 JSON 解析库性能大比拼,到底谁最牛?
放弃FastJson!一篇就够,Jackson的功能原来如此之牛(万字干货)
在上篇《经过多方调研,最终还是决定禁用FastJson!》中,讲了FastJson的基本使用以及存在的不确定性问题,所以最终决定在项目中放弃使用,进而选择市面上比较主流,Spring Boot默认绑定的JSON类库:Jackson。
程序新视界
2021/03/02
4.2K0
Java几种常用JSON库性能比较
本文通过JMH(即JavaMicrobenchmarkHarness,基于方法层面的基准测试,精网络
Java架构师必看
2021/07/15
5K0
Java几种常用JSON库性能比较
浅谈黑盒识别Fastjson/Jackson组件
朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把“亿人安全“设为星标”,否则可能就看不到了啦
亿人安全
2024/06/27
4070
浅谈黑盒识别Fastjson/Jackson组件
除了FastJson,你也应该了解一下Jackson(一)
在上月末的时候收到一条关于fastjson安全漏洞的消息,突然想到先前好像已经有好多次这样的事件了(在fastjson上面)。关于安全方面,虽然中枪的机率微小,但是在这个信息越来越复杂的时代,安全性也变得越来越重要,就像DevSecOps的诞生,在软件交付的整个价值流中我们也需要注重安全这方面。当然我们现在不谈关于FastJson的优劣,因为我们本文的目标是让大家了解和掌握Jackson。
东溪陈姓少年
2020/08/06
1.3K0
FastJSON、Gson、Jackson(简单了解使用)[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说FastJSON、Gson、Jackson(简单了解使用)[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/02/09
5.1K0
FastJSON、Gson、Jackson(简单了解使用)[通俗易懂]
用了几年的 Fastjson,我最终替换成了Jackson!
作者:larva-zhh 来源:www.cnblogs.com/larva-zhh/p/11544317.html
Java技术栈
2021/05/11
6K0
除了闹过腥风血雨的fastjosn,你还知道哪些Java解析JSON的利器?
昨天下午 5 点 10 分左右,我解决掉了最后一个 bug,轻舒一口气,准备关机下班。可这个时候,老板朝我走来,脸上挂着神秘的微笑,我就知道他不怀好意。果不其然,他扔给了我一个新的需求,要我在 Java 中解析 JSON,并且要在半个小时候给出最佳的解决方案。
沉默王二
2020/02/17
1.4K0
Java 中几种常用 JSON 库性能比较
来 源:xncoding.com/2018/01/09/java/jsons.html
好好学java
2019/07/10
5530
推荐阅读
相关推荐
为什么要强制弃坑Fastjson而主推Jackson?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档