Java的JSON處理器 fastjson 發布1.1.3版本

openkk 14年前發布 | 17K 次閱讀 Java JSON

fastjson 是一個性能很好的 Java 語言實現的 JSON 解析器和生成器,來自阿里巴巴的工程師開發。

主要特點:

  • 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
  • 強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)
  • 零依賴(沒有依賴其它任何類庫除了JDK)

示例代碼:

import com.alibaba.fastjson.JSON;

Group group = new Group(); group.setId(0L); group.setName("admin");

User guestUser = new User(); guestUser.setId(2L); guestUser.setName("guest");

User rootUser = new User(); rootUser.setId(3L); rootUser.setName("root");

group.getUsers().add(guestUser); group.getUsers().add(rootUser);

String jsonString = JSON.toJSONString(group);

System.out.println(jsonString);</pre>

Fastjson 1.1.3是一個重要的功能增強版本,在這個版本開始,fastjson支持循環引用,完善支持WriteClassName的特性,使得fastjson開始具備替換hessian和java serialize的能力。 


支持循環引用。 

很多用戶在初次使用fastjson時都遇到了循環引用的問題,這是反映最多的問題,我越來越認識到支持循環引用的必要性。經過測試,加入循環應用的支持對性能的影響很小,小于5%。我決定在1.1.3加入循環應用支持,而且是缺省打開這個特性。 

fastjson支持的循環應用是自然的,不需要象jackson那樣,需要Annotation設置。fastjson支持的引用,是基于path的,方便javascript解析。 

語法 

Java代碼   
</div>
  1. {"$ref":"$"// 引用根對象  
  2. {"$ref":"$"// 引用根對象  
  3. {"$ref":"@"// 引用自己  
  4. {"$ref":".."// 引用父對象  
  5. {"$ref":"../.."// 引用父對象的父對象  
  6. {"$ref":"$.members[0].reportTo"// 基于路徑的引用  
</div>

具體例子看這里:http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=5832796&nbsp;


自省支持 
在標準中,將對象序列化為JSON文本之后,就丟失了類型信息。雖然fastjson能夠支持parse時傳入Class來實現類型的識別,但是這個有局限性,在fastjson 1.1.3之后,完善支持一個特性,就是自省。 

具體例子請看這里:http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=5832803&nbsp;

支持非缺省構造函數和工廠方法構造對象 
fastjson 1.1.3開始支持沒有缺省構造函數的Java對象的反序列化。通過@JSONCreator來標識構造對象的方式。 

具體請看這里: 
非缺省構造函數 http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=5832818&nbsp;
工廠方法 http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=5832821&nbsp;

原型接口 
以接口的方式來操作json數據,這個特性是借鑒了jackson的功能。 
具體例子看這里:http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=5832824&nbsp;

How to get it? 
If you're Maven user, just use our maven repository(http://code.alibabatech.com/mvn/releases/) with folloging dependency 
Java代碼   
</div>
  1. <dependency>  
  2.      <groupId>com.alibaba</groupId>  
  3.      <artifactId>fastjson</artifactId>  
  4.      <version>1.1.3</version>  
  5. </dependency>  
</div>

Downlaods 
Binary : http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.3/fastjson-1.1.3.jar&nbsp;
Source :http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.3/fastjson-1.1.3-sources.jar&nbsp;
Subversion : http://code.alibabatech.com/svn/fastjson/trunk/fastjson/&nbsp;

Issue tracking 
http://code.alibabatech.com/jira/plugins/servlet/project-config/FASTJSON/versions&nbsp;
Bug 
[FASTJSON-73] - 不支持Set類型數據的反序列 
[FASTJSON-77] - JSONSerializerMap存在兼容問題 
[FASTJSON-78] - java.util.concurrent.TimeUnit序列化數據不對 

Improvement 
[FASTJSON-71] - 使用Base64編碼優化byte[]字段的序列化和反序列化性能 
[FASTJSON-72] - 使用SoftReference處理ThreadLocalCache 

* New Feature 
[FASTJSON-74] - 支持序列化時輸出類型信息 
[FASTJSON-75] - 支持Key類型不是String的Map的序列化和反序列化 
[FASTJSON-80] - 原型接口 
[FASTJSON-81] - 支持循環引用

轉自: http://code.alibabatech.com/wiki/display/FastJSON/Release+Notes+%281.1.3%29

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!