fastjson常见问题

1. 怎么获得fastjson?

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

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

    android版本
    xml
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.1.55.android</version>
    </dependency>

    ## 2. fastjson主要的API哪些?
    fastjson入口类是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。
    java
    package com.alibaba.fastjson;
    public abstract class JSON {
    public static final String toJSONString(Object object);
    public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);
    }

    序列化:
    java
    String jsonString = JSON.toJSONString(obj);

    反序列化:
    java
    VO vo = JSON.parseObject("...", VO.class);

    泛型反序列化:
    ```java
    import com.alibaba.fastjson.TypeReference;

List list = JSON.parseObject("...", new TypeReference>() {});

## 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 。

自行做性能测试时,关闭循环引用检测的功能。
```java
JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect)
VO vo = JSON.parseObject("...", VO.class, Feature.DisableCircularReferenceDetect)

这里有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 。gson的g可能是“龟”拼音的缩写,龟速的json库。

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很简单,例如:

JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")

使用ISO-8601日期格式

JSON.toJSONString(obj, SerializerFeature.UseISO8601DateFormat);

全局修改日期格式

JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);

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

  • 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特性关闭引用检测和生成。例如:

String  jsonString = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);

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

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

String  jsonString = JSON.toJSONString(obj, SerializerFeature.BrowserCompatible);

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

14. 将对象中的空值输出

缺省情况下fastjson不输出对象的空值的,如果你需要输出空值,看这里 https://github.com/alibaba/fastjson/wiki/WriteNull_cn

更多信息

https://github.com/alibaba/fastjson/wiki

时间: 2024-10-15 06:17:25

fastjson常见问题的相关文章

Fastjson 爆出远程代码执行高危漏洞,更新版本已修复

漏洞介绍fastjson在1.2.24以及之前版本近日曝出代码执行漏洞,当用户提交一个精心构造的恶意的序列化数据到服务器端时,fastjson在反序列化时存在漏洞,可导致远程任意代码执行漏洞. 风险:高风险方式:黑客通过利用漏洞可以实现远程代码执行影响:1.2.24及之前版本安全版本:>=1.2.28 修复方法 1.请将fastjson升级到1.2.28或者更新版本 <groupId>com.alibaba</groupId> <artifactId>fastjs

家用无线路由器的配置和常见问题汇总

家用无线路由器的配置和常见问题汇总   一.路由器设置的网页存储在路由器芯片里,设置时WAN接口(路由器上蓝色接口)不需要接网线 1.路由器设置的网页存储在路由器芯片里,设置时WAN接口(路由器上蓝色接口)不需要接网线. 二.进入不了管理界面,或者打不开192.168.1.1 方法一. fwr701型可以尝试使用10.0.0.1进入(浏览器输入10.0.0.1) 如使用此方法可以进入进入后请修改路由器地址到正常网段,可参见修改路由器地址防止与网内路由器.光猫等冲突 方法二: 1.点击"开始-运行

360云盘常见问题

常见问题 1360云盘可以做什么? 无需U盘,360云盘可以让您的照片,文档.音乐.视频.软件.应用等各种内容,随时随地触手可及,永不丢失. 2如何申请使用360云盘? 360云盘目前为Beta版公测阶段,每天限量发放体验资格.使用360账号登录网站即可申请体验资格,申请成功后,即可登录体验使用360云盘. 3360云盘与其它传统网盘有什么区别? 传统网盘大多只提供上传下载功能.360云盘除了提供最基本的文件上传下载服务外,还提供文件实时同步功能,您只需将文件放到360云盘目录,360云盘程序将

Win7/Win8.1免费升级Win10正式版常见问题汇总解答

  今天,微软宣布Windows 10正式版将于7月29日发布,届时正版Win7和Win8.1用户可免费升级到Win10.与此同时,微软官网也迎来了改版,并回答了一些Windows 10免费升级相关的问题,下面小编就为大家带来Win7/Win8.1免费升级Win10正式版常见问题汇总解答,具体如下. Win10何时推出? Win10将于2015年7月29日发布. 预订Win10免费升级版有何意义? 我们将在有限时间内为符合条件的Windows7 SP1.Windows 8.1更新和Windows

新手入门:PHP网站开发中常见问题汇总

PHP网站开发 动态网页制作PHP PHP教程 PHP技巧 PHP网站开发常见问题 [1]页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到 当然也可以修改自动全局变量为开(php.ini改为register_globals = On):考虑到兼容性,还是强迫自己熟悉新的写法比较好. [2]Win32下apache2 用

CSS常见问题汇总

用好CSS能使你的网页更加简炼,为什么同样内容的网页,有的人做出来有几十KB,而高手做出来只有十几KB,CSS在其中的作用是不言而喻的.以下是使用CSS中的常见问题,供参考. 1.CSS在网页制作中一般有三种方式的用法,那么具体在使用时该采用哪种用法? 当有多个网页要用到的CSS,采用外连CSS文件的方式,这样网页的代码大大减少,修改起来非常方便:只在单个网页中使用的CSS,采用文档头部方式:只有在一个网页一.两个地方才用到的CSS,采用行内插入方式. 2.CSS的三种用法在一个网页中要以混用吗

PPT配色常见问题

估计大家在PPT配色的时候常见问题有: 1.不知道PPT主色一般放在什么地方? 面积较大,主宰整体换面的色调,给人整体印象的色彩(无位置限制) 2.不知道PPT辅色放在什么地方? 运用于过渡.平衡色彩.丰富色彩层次等;一般应用于标题强调,正文,背景等; 3.不知道PPT主色和PPT辅色之间的面积关系? 主色占有较大比例,辅助色起到画龙点睛或过渡丰富层次的作用,没有具体的比例数据; 4. 不知道PPT里突出色放在什么地方? 运用于突出重点信息,如你需要特别引起别人注意的信息. 5. 不知道这个PP

Ajax程序开发中常见问题

Ajax程序开发中常见问题,看下文章或许你就少犯了许多错误了. 1.ajax,action中response返回的xml文档格式错误时,eclipse debug进入不到action中.     2.ajax缓存问题,需要加入xmlHttp.setRequestHeader("If-Modified-Since","0");便可解决.     3.如果不是ajax提交,而设置了PrintWriter out = response.getWriter();则jsp会产

web标准常见问题集合

web|web标准|集合|问题 列举了一些常见,新手经常问的问题.举例并说明解决方法. 1.超链接访问过后hover样式就不出现的问题 运行代码框<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><meta http-equiv="Content-Type" co