你能夠經過以下地方下載fastjson:java
<dependency>
<groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.21</version> </dependency>
android版本android
<dependency>
<groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.55.android</version> </dependency>
fastjson入口類是com.alibaba.fastjson.JSON,主要的API是JSON.toJSONString,和parseObject。git
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); }
序列化:github
String jsonString = JSON.toJSONString(obj);
反序列化:json
VO vo = JSON.parseObject("...", VO.class);
泛型反序列化:api
import com.alibaba.fastjson.TypeReference; List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});
fastjson的使用例子看這裏:https://github.com/alibaba/fastjson/wiki/Samples-DataBind瀏覽器
fastjson是目前java語言中最快的json庫,比自稱最快的jackson速度要快,第三方獨立測試結果看這裏:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 。jvm
自行作性能測試時,關閉循環引用檢測的功能。maven
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性能
fastjson比gson快大約6倍,測試結果上這裏:https://github.com/eishay/jvm-serializers/wiki/Staging-Results 。
fastjson有專門的for android版本,去掉不經常使用的功能。jar佔的字節數更小。git branch地址是:https://github.com/alibaba/fastjson/tree/android 。
不須要,fastjson的序列化和反序列化都不須要作特別配置,惟一的要求是,你序列化的類符合java bean規範。
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);
反序列化可以自動識別以下日期格式:
你能夠使用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
使用SerializerFeature.DisableCircularReferenceDetect特性關閉引用檢測和生成。例如:
String jsonString = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
fastjson提供了BrowserCompatible這個配置,打開以後,全部的中文都會序列化爲\uXXXX這種格式,字節數會多一些,可是能兼容IE 6。
String jsonString = JSON.toJSONString(obj, SerializerFeature.BrowserCompatible);
fastjson提供了Stream API,詳細看這裏 https://github.com/alibaba/fastjson/wiki/Stream-api
fastjson提供了使用Annotation定製序列化和反序列化的功能。https://github.com/alibaba/fastjson/wiki/JSONField
缺省狀況下fastjson不輸出對象的空值的,若是你須要輸出空值,看這裏 https://github.com/alibaba/fastjson/wiki/WriteNull_cn