Fastjson 常見問題
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> <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的使用範例看這裡:Samples-DataBind
4. fastjson的效能如何?
fastjson是目前java語言中最快的json函式庫,比自稱最快的jackson速度快,第三方獨立測試結果看這裡:fastjson效能比較 。
自行做效能測試時,關閉循環引用偵測的功能。
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倍,測試結果上這裡:效能測試比較。 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:ssyyyy-MM-dd HH:mm:ss.SSS毫秒數字毫秒數字字串.NET JSON日期格式new Date(198293238)
String jsonString = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);fastjson提供了BrowserCompatible這個配置,打開之後,所有的中文都會序列化為\uXXXX這種格式,字節數會多一些,但是能兼容IE 6。
String jsonString = JSON.toJSONString(obj, SerializerFeature.BrowserCompatible);fastjson提供了Stream API,詳細看這裡Fastjson Stream apifastjson提供了使用Annotation自訂序列化和反序列化的功能。 Fastjson JSONField