fastjson常见问题

前端之家收集整理的这篇文章主要介绍了fastjson常见问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转载地址:http://www.cnblogs.com/dirgo/p/5185419.html

1. 怎么获得fastjson?@H_403_3@

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

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

2. fastjson主要的API哪些?@H_403_3@

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的使用例子@H_403_3@

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

4. fastjson的性能如何?@H_403_3@

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怎样?@H_403_3@

fastjson比gson快大约6倍,测试结果上这里:https://github.com/eishay/jvm-serializers/wiki/Staging-Results。gson的g可能是“龟”拼音的缩写,龟速的json库。

6. fastjson可以运行在android上么?@H_403_3@

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

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

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

8. fastjson如何处理日期@H_403_3@

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

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

使用ISO-8601日期格式

 全局修改日期格式

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. 如何定制序列化?@H_403_3@

你可以使用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. 当对象存在引用时,序列化后的结果浏览器不支持,怎么办?@H_403_3@

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

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

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

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

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

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

13. 使用@JSONField定制序列化@H_403_3@

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

猜你在找的Json相关文章