alibaba fastjson常见问题FAQ

English | 中文

1. 怎么获得fastjson?

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

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.21</version>
</dependency>

android版本

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

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);
}

序列化:

String jsonString = JSON.toJSONString(obj);

反序列化:

VO vo = JSON.parseObject("...", VO.class);

泛型反序列化:

import com.alibaba.fastjson.TypeReference;

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

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 。

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

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

from: https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

时间: 2024-10-22 22:13:48

alibaba fastjson常见问题FAQ的相关文章

JSON工具类库: alibaba/fastjson 使用记录

JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http://kimmking.github.io/2017/06/06/json-best-practice/ (JSON的高级使用,特别十分有参考价值) 二.项目地址和Wiki: Git地址: https://github.com/alibaba/fastjson Wiki:https://github.co

[转]fastjson常见问题

转自fastjson wiki说明文档:https://github.com/alibaba/fastjson/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/project

alibaba fastjson

public static void main(String[] args) { WaveSearchOutBoundNoticeDTO vo = new WaveSearchOutBoundNoticeDTO(); List<OutboundNoticeGroupSortDTO> groupSorts= new ArrayList<OutboundNoticeGroupSortDTO>(); vo.setOnhStartItemsCount(1); vo.setGroupSort

com.alibaba.fastjson.JSONObject

package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastjson.componet.Grade; import com.alibaba.fastjson.componet.User; import com.alibaba.fastjson.serializer.SerializerFeature; /** * @author Liang * * 2017年

FastJson 常见问题

一.场景 在使用序列化的时候,Object里包含了两个一模一样的对象,所以解析的时候,只有第一个能解析出来,另外一个无法显示. 查看了json的序列化源码,发现是DisableCircularReferenceDetecte特性,防止对象互相引用,导致死循环的解析. 可以使用String jsonString = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect )来解决. 二.上网搜了资料,才发现fa

LNMP 常见问题(FAQ)

常见问题(FAQ)常见问题关键词快速索引 我们为什么需要采用LNMP架构?原因不在重复,请看:关于 LNMP一键安装包支持哪些Linux发行版?目前支持CentOS(RadHat).Debian.Ubuntu. MySQL的root默认密码是什么?如果安装时不输入直接回车,密码为root,否则为你输入的密码. 开始安装LNMP时,提示error: package httpd is not installed , error: package php is not installed ,error

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中央仓库,你可以直接依赖. <dependency> <grou

常见问题FAQ

常见问题FAQ Q: 为什么没有gcc,make等工具 A: 因为有gcc等工具,可能会导致潜在的安全问题(入侵者可以直接在服务器上编译攻击程序,尤其是通过php入侵).如果有需要请通知值班sa. Q: 我要安装程序到/usr下,请给我root权限 A: 一般的程序都可以在编译的时候指定安装目录,所以只要可以配置,优先选择安装到自己的登陆账户目录下. Q: 安装到自己的目录下,怎么调用程序和库 A: 请自行修改自己~/.bashrc的配置.例如: export PATH=/srv/bin:$PA

com.alibaba.fastjson.JSONException: autoType is not support.

解决办法:https://github.com/alibaba/fastjson/wiki/enable_autotype 文摘如下: 一.添加autotype白名单 添加白名单有三种方式,三选一,如下: 1. 在代码中配置 ParserConfig.getGlobalInstance().addAccept("com.taobao.pac.client.sdk.dataobject."); 如果有多个包名前缀,分多次addAccept 2. 加上JVM启动参数 -Dfastjson.