1、經常使用json解析庫比較及選擇
1.簡介
fastjson和gson是目前比較經常使用的json解析庫,而且如今咱們項目代碼中,也在使用這兩個解析庫。
fastjson 是由阿里開發的,號稱是處理json效率最高的框架。而gson 是由google開發的,是功能比較全面的json解析工具。
2.比較
下面根據體積、性能、調用方式、文檔完備程度等幾個方面,來比較一下這兩個庫。
2.1 包體積
都使用當前最新版本的jar包,fastjson-1.1.56.android.jar 爲209.7kb,gson-2.8.0.jar 爲232kb。
二者體積相差不大,都很小。
2.2 性能
由於fastjson號稱是效率最高的框架,這部分網上有不少人討論,看了一些關於性能比較的帖子
Gson、FastJson、org.JSON到底哪個效率更高,速度更快
FastJSON、Gson和Jackson性能對比
Android總結之json解析(FastJson Gson 對比)
本身也寫了簡單的程序,使用最新版本的兩個庫測試。
測試方法爲定義一個簡單的類 Example,並生成List<Example> 實例,分別使用兩個類庫執行 object => string 和 string => object 操做 10 次,計算消耗時間(毫秒)。java
list countandroid
gson耗時git
fastjson耗時github
耗時比json
100 641 551 1.16 200 1191 970 1.23 300 1786 1445 1.235 400 2393 1911 1.25 500 3038 2550 1.19 1000 6054 5062 1.195 2000 12647 11044 1.145 3000 22488 17923 1.25 4000 30385 24178 1.26
考慮到移動端的實際使用場景,沒有繼續再測試更大數據量的耗時,上述時間也與設備性能和數據結構的複雜性有關。根據上述數據來看,確實fastjson比gson快了20%左右。
2.3 調用方式
只比較最簡單的由object=>string 和 string=>object 的操做,二者都很是簡便
2.4 文檔完備程度
相對來講,fastjson的文檔不多,從github上,能找到一篇 簡單的示例代碼 和一篇 常見問題解答 。沒有比較全面的使用指南。
而gson的文檔就豐富的多了,包括 api , 使用指南 , 以及第三方寫的使用指南的連接 Gson Tutorial , Gson Tutorial Series 等。
2.5 流行程度
gson遠比fastjson流行,使用的人羣更多。不管是在google上搜索fastjson/gson關鍵詞,仍是在stackoverflow上搜索二者相關的提問,二者都存在數量級上的差距。
3.結論
經過二者比較,雖然在性能上fastjson比gson更優,但在咱們具體的業務場景下,通常只會涉及到小數據量的解析操做,gson並不會比fastjson額外耗費太多的解析時間。
另外,從文檔完備程度和解析庫的流行程度來講,gson文檔相對更完善,對開發人員比較友好。另外更普遍的使用人羣,也方便開發人員更容易解決或規避使用中會出現的問題。
再有,我的感受fastjson的一些特性相對gson來講,並非太好,好比 對全部的getter方法對應的屬性,都作處理 , 忽略大小寫 。 以及在編寫demo時感受,fastjson相對gson來講,對代碼有更多要求,相對來講感受gson更傻瓜一些。api以上內容來自南哥數據結構
因爲fastjson緩衝機制,如下調用方式有內存溢出隱患框架
@Override protected BaseBean<BlockModel> parse(String sourceData) throws Exception { return JSON.parseObject(sourceData, new TypeReference<CommonListResponse<BlockModel>>(){}); } 建議改爲: private final static TypeReference<CommonListResponse<BlockModel>> type = new TypeReference<CommonListResponse<BlockModel>>(){}; @Override protected BaseBean<BlockModel> parse(String sourceData) throws Exception { return JSON.parseObject(sourceData, type); }