一、什么是fastjson
fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。
二、fastjson的優點
2.1 速度快
fastjson相對其他JSON庫的特點是快,從2011年fastjson發布1.1.x版本之后,其性能從未被其他Java實現的JSON庫超越。
2.2 使用廣泛
fastjson在阿里巴巴大規模使用,在數萬台服務器上部署,fastjson在業界被廣泛接受。在2012年被開源中國評選為最受歡迎的國產開源軟件之一。
2.3 測試完備
fastjson有非常多的testcase,在1.2.11版本中,testcase超過3321個。每次發布都會進行回歸測試,保證質量穩定。
2.4 使用簡單
fastjson的API十分簡潔。
String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseobject("{...}", VO.class); //反序列化
2.5 功能完備
支持泛型,支持流處理超大文本,支持枚舉,支持序列化和反序列化擴展。
三、下載和使用
你可以在maven中央倉庫中直接下載:
Http://repo1.maven.org/maven2/com/alibaba/fastjson/
或者配置maven依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>x.x.x</version>
</dependency>
四、項目中的使用
4.1、序列化
項目使用的是前后端分離架構,前面有提到,這里還是決定把對JSON的處理單獨拿出來說一下
SpringMVC的@ResponseBody雖然可以支持對象轉json,但顯得有些力不從心。當對象的結構復雜數據量變大就處理不了了
使用fastjson就可以快速高效的處理
JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
Fastjson 循環引用
fastjson支持循環引用,並且是缺省打開的。
當序列化后的JSON傳輸到瀏覽器或者其他語言中,這些json解析器不支持循環引用,從而導致數據丟失。你可以關閉fastjson的循環引用支持。 關閉引用檢測,還能夠提升序列化時的性能。
全局配置關閉
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();
4.2、序列化
VO vo = JSON.parseobject("{...}", VO.class); //反序列化
更多詳情可以在<a href="http://www.dba.cn/book/fastjson/">這里</a>看