Gson 與 fastJson 在使用上的差別(fastJson的優勢)

1、android 經常使用的json解析方式

Android 開發上經常使用的json解析方式有:Gson, fastJson,jackson。 
由於jackjson jar包會比較大點(700+k),Gson和fastjson的功能又基本夠用,因此一直沒正式用過jackjson。本身有用的就是Gson和fastjsonjavascript

2、基本使用方式

Gson

//解成對象
    Fromat mFromat = new Gson().fromJson(jsonStringObject, Fromat.class); //解成對象組 LinkedList<Fromat> list = new LinkedList<MainActivity.Fromat>(); Type type = new TypeToken<LinkedList<Fromat>>(){}.getType(); list = new Gson().fromJson(jsonStringArray, type); //泛型統一封裝時 須要傳個 type 進來 new TypeToken<LinkedList<Fromat>>(){}.getType(); fromJson(String json, Type typeOfT) public <T> T fromJson(String json, Type typeOfT)

fastJson

//解析成對象
    Fromat fastjsonObject = JSON.parseObject(jsonObjectString, Fromat.class); //解析成對象組 List<Fromat> fastjsonArray = JSON.parseArray(jsonArrayString, Fromat.class); //泛型統一封裝時 須要傳個 type 進來 或者TypeReference 也能夠也是調用的type new TypeReference<Fromat>() {} new TypeReference<Fromat>() {}.getType() public static <T> T parseObject(String input, Type clazz, Feature... features) public static <T> T parseObject(String text, TypeReference<T> type, Feature... features)

3、fastjson 的優勢

可維護性 > 正確性 > 性能 
說點實在的,Gson在遇到 {} [] 這種json關鍵字的時候直接解析爲string 報錯。fastjson是能夠解析 
demo代碼:html

String jsonObjectString = "{\"status\": 0}"; String jsonArrayString = "[{\"status\": 0}]"; //fastJson String fastjsonObject = JSON.parseObject(jsonObjectString, String.class); Log.d("test", "fastJson string {} = " + fastjsonObject); String fastjsonArray = JSON.parseObject(jsonArrayString, String.class); Log.d("test", "fastJson string [] = " + fastjsonArray); //Gson try { String gsonObject = new Gson().fromJson(jsonObjectString, String.class); Log.d("test", "gson string {} = " + gsonObject); }catch (Exception e){ Log.d("test", "gson string {} = " + e); } try { String gsonArray = new Gson().fromJson(jsonArrayString, String.class); Log.d("test", "gson string {} = " + gsonArray); }catch (Exception e){ Log.d("test", "gson string [] = " + e); }

結果: D/test: fastJson string {} = {「status」:0} D/test: fastJson string [] = [{「status」:0}] D/test: gson string {} = com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: D/test: gson string [] = com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 2 path $java

 

from: http://www.voidcn.com/blog/lckj686/article/p-6000736.htmlandroid

相關文章
相關標籤/搜索