久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

高性能JSON開發包FastJson怎么用

192次閱讀
沒有評論

共計 4434 個字符,預計需要花費 12 分鐘才能閱讀完成。

高性能 JSON 開發包 FastJson 怎么用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Fastjson 介紹

Fastjson 是一個 Java 語言編寫的 JSON 處理器, 由阿里巴巴公司開發。
1、遵循 http://json.org 標準,為其官方網站收錄的參考實現之一。
2、功能 qiang 打,支持 JDK 的各種類型,包括基本的 JavaBean、Collection、Map、Date、Enum、泛型。
3、無依賴,不需要例外額外的 jar,能夠直接跑在 JDK 上。
4、開源,使用 Apache License 2.0 協議開源。http://code.alibabatech.com/wiki/display/FastJSON/Home
5、具有超高的性能,java 世界里沒有其他的 json 庫能夠和 fastjson 可相比了。

如果獲得 Fastjson?
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON

如果你使用了 Maven,maven repository 配置如下:

repository 
 id opensesame /id 
 name Alibaba OpenSource Repsoitory /name 
 url http://code.alibabatech.com/mvn/releases/ /url 
 snapshots 
 enabled false /enabled 
 /snapshots 
 /repository

pom.xml 文件中加入依賴依賴:

dependency 
 groupId com.alibaba /groupId 
 artifactId fastjson /artifactId 
 version 1.0.4 /version 
 /dependency

如果沒有使用 maven,可以直接下載:

Binary : http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1.jar
Source :http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1-sources.jar
Subversion : http://code.alibabatech.com/svn/fastjson/

使用介紹:
Fastjson 的最主要的使用入口是 com.alibaba.fastjson.JSON

import com.alibaba.fastjson.JSON;
public static final Object parse(String text); //  把 JSON 文本 parse 為 JSONObject 或者 JSONArray
public static final JSONObject parseObject(String text); //  把 JSON 文本 parse 成 JSONObject
public static final  T  T parseObject(String text, Class T  clazz); //  把 JSON 文本 parse 為 JavaBean
public static final JSONArray parseArray(String text); //  把 JSON 文本 parse 成 JSONArray
public static final  T  List T  parseArray(String text, Class T  clazz); // 把 JSON 文本 parse 成 JavaBean 集合
public static final String toJSONString(Object object); //  將 JavaBean 序列化為 JSON 文本
public static final String toJSONString(Object object, boolean prettyFormat); //  將 JavaBean 序列化為帶格式的 JSON 文本
public static final Object toJSON(Object javaObject);  將 JavaBean 轉換為 JSONObject 或者 JSONArray。

代碼示例:
代碼示例用到類 User 和 Group:

public class User {
 private Long id;
 private String name;
 public Long getId() { return id; }
 public void setId(Long id) { this.id = id; }
 public String getName() { return name; }
 public void setName(String name) { this.name = name; }
public class Group {
 private Long id;
 private String name;
 private List User  users = new ArrayList User 
 public Long getId() { return id; }
 public void setId(Long id) { this.id = id; }
 public String getName() { return name; }
 public void setName(String name) { this.name = name; }
 public List User  getUsers() { return users; }
 public void setUsers(List User  users) { this.users = users; }
}

Encode 代碼示例:

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);

Decode 代碼示例:

Group group2 = JSON.parseObject(jsonString, Group.class);

之前的一個版本是 1.1.0,1.1.0 采用 asm 和 SortFastMatch 算法提高性能,由于過于著急展示其優越的性能,沒有進行嚴格測試就發布了。

1.1.1 相對于 1.1.0,這是一個比較穩定的版本了,行測試覆蓋率重新提升到 90% 以上,build verify testcase 983 個。

這個版本進一步完善了 asm 和 SortFieldFastMatch 算法,進一步提升了性能,同時補充了大量的 testcase,提升了穩定性,我向你推薦使用這個版本,使用這個版本你將會得到令人驚奇的性能。

1.1.1 版本的 asm 來源自 objectweb 的 asm 項目,根據 fastjson 的需要做裁剪,確保引入 asm 的同時不引起包大小的過渡變大。

為了更好使用 sort field martch 優化算法提升 parser 的性能,fastjson 序列化的時候,缺省把 SerializerFeature.SortField 特性打開了。反序列化的時候也缺省把 SortFeidFastMatch 的選項打開了。這樣,如果你用 fastjson 序列化的文本,輸出的結果是按照 fieldName 排序輸出的,parser 時也能利用這個順序進行優化讀取。這種情況下,parser 能夠獲得非常好的性能。

我使用 github.com/eishay/jvm-serializers/ 提供的程序做測試,性能數據如下:

  序列化時間反序列化時間大小壓縮后大小 java 序列化 854643199889541hessian664310043501313protobuf30081694239149thrift31821951349197avro35752095221133json-lib45734149741485263jackson32452986503271fastjson22921499468251

測試跑的腳本是:

./run -chart -include=`cat serializers.txt | tr  \\n   , ` data/media.1.cks

從上面的數據來看,fastjson 的性能已經超越 protobuf、thrift、avro 這些二進制協議了。一個文本協議的性能超越二進制協議是很難的,我很高興向大家宣布我做到了!!

鑒于 fastjson 優越的性能表現,我建議做如下事情;
1、替換其他所有的 json 庫,java 世界里沒有其他的 json 庫能夠和 fastjson 可相比了。
2、使用 fastjson 的序列化和反序列化替換 Java serialize,java serialize 不單性能慢,而且體制大。
3、使用 fastjson 替換 hessian,json 協議不必 hessian 體積大,而且 fastjson 性能優越,數倍于 hessian
4、把 fastjson 用于 memached 緩存對象數據。

如何得到它?

如果您是 Maven 用戶,只需使用我們的 Maven 存儲庫即可 (http://code.alibabatech.com/mvn/releases/) 具有后續依賴性

dependency 
  groupId com.alibaba /groupId 
  artifactId fastjson /artifactId 
  version 1.1.1 /version 
 /dependency

關于高性能 JSON 開發包 FastJson 怎么用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4434字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 上栗县| 茂名市| 晋城| 奎屯市| 丰城市| 香港 | 额济纳旗| 迁安市| 历史| 四川省| 辽宁省| 边坝县| 重庆市| 阳原县| 肥城市| 通道| 五莲县| 昭觉县| 平遥县| 连江县| 遵义市| 潞西市| 阳泉市| 沧州市| 库尔勒市| 镇赉县| 黔西| 孝义市| 大港区| 乌拉特后旗| 漳州市| 松阳县| 苏尼特左旗| 台中县| 新宾| 安仁县| 富裕县| 昌平区| 靖西县| 武宁县| 凯里市|