android:json解析庫的選擇


本文轉自:http://iandroiddev.com/post/2011-10-08/5646446

 

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。它基於JavaScriptStandard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。

       Android的SDK中包含四個與JSON相關的類和一個Exceptions:JSONArray、JSONObject、JSONStringer、JSONTokener、JSONException。通過這5個類我們就可以自行對Json進行解析(使用很簡單,可以網上搜索使用方法或者參照Android SDK),另外Google在Android的SDK中放入了JsonReader和JsonWriter來方便我們讀寫Json。但是通過他們讀寫Json還都要停留到手工操作上,無法直接實現Json字符串到對象、對象到Json字符串的轉換,例如解析Json需要通過Key值一個一個的取Value,工作量大不說,還增加了出錯的幾率。有沒有辦法可以:直接實現Json字符串到對象、對象到Json字符串的轉換?

       在Java EE中使用最廣泛的是Jackson Json(據說是集成到Spring中的,我不太清楚),使用非常方便而且效率極高;另外還有兩個比較有名氣的是Gson和JSON-lib,某些大俠已經對它們做了對比實驗,結論如下執行效率:Jackson>Gson>JSON-lib,但是鑒於我們要將解析庫集成到Android應用當中,我們還要考慮一下嵌入的庫的體積,分別取他們的最新版本:

jackson-all-1.9.0.jar         1.1MB

gson-1.7.1.jar                 174KB

json-lib-2.4-jdk15.jar      159KB    (2010年12月開始已經停止更新了)

       通過這個比較我們幾乎可以直接排除掉jackson(為了解析JSON方便而讓軟件增加1.1MB?),而json lib執行效率低下且已經停止了更新,我們也不希望選用。另外jackson生於Jave EE,完全符合java bean慣例是對getter進行序列化,而gson是對成員變量field進行序列化,Android恰恰是推薦開發者直接使用成員變量訪問而不是用setter、getter。最終我們選擇了Google出品的Gson,至於Gson如何使用,歡迎關注下一篇文章。

 

相關參考:

android SDK:android json解析

gson:     android:使用Gon解析解析json

jackson:   Jackson 框架,輕易轉換JSON(一)

json-lib:  JSON-lib框架,轉換JSON、XML不再困難


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM