Fastjson:Java高性能JSON库

转载 2018年04月17日 14:33:44



Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

主要特点

  • 快速:测试结果比其他Java解析器(包括jackson)或databinder更快。
  • 强大:支持绑定常用JDK类以及Java Bean class、Collection、Map、Date 或 enum。
  • 除JDK以外不依赖其他第三方库。
  • 遵循Apache 2.0开源协议发布。

基准测试

测试代码:https://github.com/wenshao/jvm-serializers

测试结果,时间单位为纳秒,size大小为字节。

结果说明:

  • create:创建对象(使用序列化工具指定的类)。
  • ser:创建对象并序列化。
  • +same:序列化相同的对象(例如,不包括创建时间)
  • deser:反序列化对象。
  • +shal:反序列化对象并访问顶层字段。
  • +deep:反序列化对象并访问所有字段。
  • total:创建 + 序列化 + 反序列化 并访问所有字段。
  • size:序列化后数据大小。
  • +dfl:使用Java自带DEFLATE(zilib)方法压缩后的序列化数据大小。

FAQ

1. 怎么获得fastjson?

你可以通过如下地方下载fastjson:

  • maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/
  • Sourceforge.net : https://sourceforge.net/projects/fastjson/files/
  • 在maven中如何配置fastjson依赖 fastjson最新版本都会发布到maven中央仓库,你可以直接依赖。

其中x.x.x不是具体的版本号,最新版本你通过fastjson的首页( https://github.com/alibaba/fastjson/wiki )获得。

2. fastjson主要的API哪些?

fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString 和 parseObject。

序列化:

反序列化:

泛型反序列化:

 3. 哪里找fastjson的使用例子

fastjson的使用例子看这里:https://github.com/alibaba/fastjson/wiki/Samples-DataBind

4. fastjson的性能如何?

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果看这里:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 。

自行做性能测试时,关闭循环引用检测的功能。

这里有jackson作者cowtowncoder等人对fastjson的性能评价: https://groups.google.com/forum/#!topic/java-serialization-benchmarking/8eS1KOquAhw

5. fastjson性能比gson怎样?

fastjson比gson快大约6倍,测试结果上这里:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 

6. fastjson可以运行在Android上么?

fastjson有专门的for android版本,去掉不常用的功能。jar占的字节数更小。git branch地址是:https://github.com/alibaba/fastjson/tree/android 

7. fastjson序列化的需要像json-lib一样配置Java bean的序列化么?

不需要,fastjson的序列化和反序列化都不需要做特别配置,唯一的要求是,你序列化的类符合java bean规范。

8. fastjson如何处理日期

fastjson处理日期的API很简单,例如:

使用ISO-8601日期格式

全局修改日期格式

反序列化能够自动识别如下日期格式:

  • ISO-8601日期格式
  • yyyy-MM-dd
  • yyyy-MM-dd HH:mm:ss
  • yyyy-MM-dd HH:mm:ss.SSS
  • 毫秒数字
  • 毫秒数字字符串
  • .NET JSON日期格式
  • new Date(198293238)

9. 如何定制序列化?

你可以使用SimplePrePropertyFilter过滤字段,详细看这里:https://github.com/alibaba/fastjson/wiki/%E4%BD%BF%E7%94%A8SimplePropertyPreFilter%E8%BF%87%E6%BB%A4%E5%B1%9E%E6%80%A7

关于定制序列化,详细的介绍看这里: https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96

10. 当对象存在引用时,序列化后的结果浏览器不支持,怎么办?

使用SerializerFeature.DisableCircularReferenceDetect特性关闭引用检测和生成。例如:

 11. IE 6不支持JSON带中文字符串,要怎么处理?

fastjson提供了BrowserCompatible这个配置,打开之后,所有的中文都会序列化为\uXXXX这种格式,字节数会多一些,但是能兼容IE 6。

12. fastjson 如何处理超大对象和超大JSON文本

fastjson提供了Stream API,详细看这里 https://github.com/alibaba/fastjson/wiki/Stream-api

13. 使用@JSONField定制序列化

fastjson提供了使用Annotation定制序列化和反序列化的功能。https://github.com/alibaba/fastjson/wiki/JSONField

官方网站:https://github.com/alibaba/fastjson/wiki

开源地址:https://github.com/Alibaba/fastjson

fastjson.jar

  • 2018年02月02日 11:02
  • 748KB
  • 下载

c#中的fastjson和Newtonsoft.Json的性能简单测试

因为我的android中的是fastjson,所有准备在服务端也用fastjson,但可惜的是c#的fastjson不是阿里的 https://www.codeproject.com/Article...
  • yedajiang44
  • yedajiang44
  • 2017-05-20 15:53:29
  • 1656

java json工具类(FastJson)

FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能。实际上其他的json处理工具都和它差不...
  • qilixiang012
  • qilixiang012
  • 2015-07-09 14:41:12
  • 1312

JSON解析类库之Fastjson(1) --- Fastjson类库学习, 生成与解析json数据,json字符串与Java对象互转

Fastjson是一个Java语言编写的高性能功能完善的JSON库(JSON处理器,解析类库)。 1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能强大,支持JDK...
  • chenchunlin526
  • chenchunlin526
  • 2017-04-17 11:40:47
  • 1104

xml转json高效率的java实现

xml转json高效率的java实现,效率是json-lib的4倍,引用jar少
  • tkggetg
  • tkggetg
  • 2015-08-19 17:54:16
  • 8388

Json高性能包 FastJson

  • 2012年12月24日 17:35
  • 348KB
  • 下载

FastJson(1.1.46 和 1.1.2 jar 和 source)

  • 2017年11月22日 15:29
  • 4.75MB
  • 下载

Java fastjson 解析json配置文件

需要准备下面工具:fastjson common-io(文件转化为Stirng) 网址:http://www.bejson.com/json2javapojo/ (JSON字符串转换成Java实体类...
  • u012404490
  • u012404490
  • 2016-09-13 17:15:42
  • 2485

JSON及java,fastjson实例(附代码)

1.JSON JSON(JavaScript Object Notation) 1.1JSON介绍及使用场景 JSON(JavaScript Object Notation)是轻量级的数据交...
  • bobshute
  • bobshute
  • 2017-03-28 19:35:00
  • 1185
收藏助手
不良信息举报
您举报文章:Fastjson:Java高性能JSON库
举报原因:
原因补充:

(最多只允许输入30个字)