Fastjson软件是一款非常专业且优秀的Java库,作为阿里巴巴的开源JSON解析库,它可以能够解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以能够从字符串反序列化到JavaBean,支持转换功能,可使用该软件将JSON字符换转换为等价的Java对象,Fastjson可以能够与任意的Java对象一起使用,即使是没有源代码的预先存在的对象也可进行使用,支持通过启动参数和fastjson.properties配置fastjson.auto.discoverable,解决某些场景fastjson与jackson冲突问题,欢迎有需要的用户下载体验

软件功能
在服务器端和安卓客户端能够提供最好的性能
能够提供简单的toJSONString()和parseObject()方法,将Java对象转换成JSON,反之亦然。
允许将预先存在的不可修改的对象转换为JSON,或从JSON中转换。
对Java泛型的广泛支持
允许自定义对象的表示方法
支持任意复杂的对象(具有深厚的继承层次和广泛使用的通用类型
软件特色
速度快
fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
使用广泛
fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
测试完备
fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
使用简单
fastjson的API十分简洁。
官方教程
编码

输出

解码

Group.java

User.java

在Spring中集成Fastjson
在Spring MVC中集成Fastjson
如果您使用Spring MVC来构建Web应用程序性能有更高的要求的话,可以能够使用Fastjson能够提供的FastJsonHttpMessageConverter来替换Spring MVC默认的HttpMessageConverter 以提高@RestController @ResponseBody @RequestBody注释解的JSON序列化速度。下面是配置方式,非常简单。
XML样式
如果是使用XML的方式配置Spring MVC的话,只需在Spring MVC的XML配置文件中加入以下配置即可。

通常通常配置已经可以能够满足大部分使用场景,如果你想对它进行自定义配置的话,你可以能够添加FastJsonConfigBean。

编程式
如果是使用编程的方式(通常是基于Spring Boot项目)配置Spring MVC的话只需继承WebMvcConfigurerAdapter覆写configureMessageConverters方法即可,就像下面这样。

注:如果您使用的Fastjson版本小于1.2.36的话(强烈建议使用最新版本),在与Spring MVC 4.X版本集成时需使用FastJsonHttpMessageConverter4。
注2:SpringBoot 2.0.1版本中加载WebMvcConfigurer的顺序发生了变化,故需使用converters.add(0, converter);指定FastJsonHttpMessageConverter在转换器内部的顺序,否则在SpringBoot 2.0.1及之后的版本中将优先使用Jackson处理。
对JSONP支持
使用注解@ResponseJSONP修饰类或具体方法:

配置JSONPResponseBodyAdvice类:
XML样式

编程式

在Spring Data Redis中集成Fastjson
通常我们在Spring中使用Redis是通过Spring Data Redis能够提供的RedisTemplate来进行的,如果你准备使用JSON作为对象序列/反序列化的方式串行序列化速度有更高的要求的话,建议使用Fastjson能够提供的GenericFastJsonRedisSerializer或FastJsonRedisSerializer作为RedisTemplate的RedisSerializer。下面是配置方式,非常简单。
XML样式
如果是使用XML的方式配置Spring Data Redis的话,只需将RedisTemplate中的替换Serializer为GenericFastJsonRedisSerializer即可。

下面是完整的Spring集成Redis配置供参考。

编程式
如果是使用编程的方式(通常是基于Spring Boot项目)配置RedisTemplate的话直接在你的配置类(被@Configuration注解修饰的类)中显式创建RedisTemplateBean,设置Serializer即可。

通常使用GenericFastJsonRedisSerializer即可满足大部分场景,如果你想定义特定类型专用的RedisTemplate可以能够使用FastJsonRedisSerializer来代替GenericFastJsonRedisSerializer,配置是类似的。
将Fastjson集成到JAX-RS中
Fastjson已实现JAX-RS,您可以能够在Restfull Service中使用FastJson进行数据序列化和反序列化。
在Apache CXF中使用Fastjson
以Apache CXF Restful和Spring框架为例

在泽西岛使用Fastjson
自版本1.2.37起的用户注册码(推荐)

注意:当您不必在Jersey进行用户注册时,Fastjson还能够提供了自动注册,默认情况下已启用,如果您不希望这样做,则可以能够

在RestEasy中使用Fastjson
在pom.xml中启用RestEasy自动扫描,如下所示:

或禁用自动扫描,例如在您的web.xml中:

常见问题
1.怎么获得fastjson?
你可以能够通过如下地方下载fastjson:
maven中央仓库:http : //central.maven.org/maven2/com/alibaba/fastjson/
Sourceforge.net:https://sourceforge.net/projects/fastjson/files/
在maven中如何配置fastjson依赖fastjson最新版本都会发布到maven中央仓库,你可以能够直接依赖。

android版本

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
自行做性能测试时,关闭循环引用检测的功能。

5.fastjson性能比gson怎样?
fastjson比gson快大约6倍,测试结果上这里:https : //github.com/eishay/jvm-serializers/wiki/Staging-Results。
6.fastjson可以能够运行在android上么?
fastjson有专门针对android版本,去掉不常用功能。jar占的字节数更小。gitbranch地址是: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日期格式
新日期(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能够提供了使用注释定制序列化和反序列化的功能。https://github.com/alibaba/fastjson/wiki/JSONField
14.将对象中的空值输出
出现情况下fastjson不输出对象的空值的,如果你需要输出空值,看这里https://github.com/alibaba/fastjson/wiki/WriteNull_cn
15.返回整数javascript丢失精度问题
当返回的整数大于9007199254740991或小于-9007199254740991时,在javascript中会丢失精度。此时使用SerializerFeature.BrowserCompatible能自动将数值转换为字符串返回,解决精度问题。
更新日志
修复一些直接抛RuntimeException的问题
parser自动识别gzip bytes
修复Throwable继承类属性不支持自动类型转换问题
修复PrettyFormat情况下引用计算不对的问题
修复AutoType不兼容LinkedHashMap的问题
增强对Enum类型的自定类型转换
修复deserializeUsing在泛型某些场景不能正常工作的问题
提升JSONReader性能,减少小对象创建
增强对JSONPath对filter的支持
JSONPath支持忽略NullValue的选项
增强对定制化enum的支持
增强对java.time.Instant和org.joda.time.Instant的支持
修复Parser某些场景不能识别引用的问题
版权声明:Fastjson(Java库)所展示的资源内容均来自于第三方用户上传分享,您所下载的资源内容仅供个人学习交流使用,严禁用于商业用途,软件的著作权归原作者所有,如果有侵犯您的权利,请来信告知,我们将及时撤销。
软件下载信息清单:
驱动文件名称 | 发布日期 | 文件大小 | 下载文件名 |
---|---|---|---|
Fastjson(Java库)安装包 | 2024年11月2日 | 3.93 MB | Fastjson.zip |
软件评论