1, 環(huán)境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK編碼 2,分析對象 jackson1.8.2 http://jackson./ gson1.7.1 http://code.google.com/p/google-gson/ jsob_lib2.4 http://json-lib./ 3,使用實例 用兩個bean進行測試,兩個bean都嵌套有數(shù)組和對象,唯一的區(qū)別是一個屬性全部小寫開頭,另一個屬性全部大寫開頭,bean里面都有setter和getter。 JBean代碼如下: [java] view plain copy
JBean2代碼如下: 把JBean的屬性頭字母全部改成小寫,然后用IDE自動生成setter和getter。
Jackson使用實例 (Json to bean) [java] view plain copy
(Bean to json) [java] view plain copy
嵌套使用List和Object的情況下,jackson依然能準(zhǔn)確轉(zhuǎn)換,唯一不足之處就是無論bean屬性的開頭字符是大寫還是小寫,被jackson轉(zhuǎn)換成字符串后首字母都是小寫的了。 Gson使用實例 (json to bean) [java] view plain copy
(bean to json) [java] view plain copy
使用很簡單,bean小寫字母開頭時,由json轉(zhuǎn)bean才能成功。 JSON_LIB使用實例 (json to bean) [java] view plain copy
(bean to json) [java] view plain copy
對嵌套List和Object支持不夠好,我調(diào)試嵌套的時候沒有成功,時間關(guān)系也沒來得及細細找原因,不過之前有使用過,這個工具最大的好處是,無論json字符串嵌套的是數(shù)組還是對象,使用JSONObject.fromObject或者JSONArray.fromObject轉(zhuǎn)換后一律分別轉(zhuǎn)換成對象和數(shù)組了,對操作是比較方便的,但是卻改變了json原來的數(shù)據(jù)結(jié)構(gòu)。 4,性能對比 之前沒有做過性能測試這樣的工作,于是網(wǎng)上搜索了達人的研究成果,地址http://wangym./blog/738933
簡單的說就是性能方面jackson > gson > json-lib。其中g(shù)son比json-lib性能略高一點,jacks性能高出json-lib有10倍。 5,總結(jié)
還有一點忘記補充了,jackson和gson都可以獨立使用,而json-lib是依賴其他五個包的,json-lib官網(wǎng)原話 Json-lib requires (at least) the following dependencies in your classpath: jakarta commons-lang 2.5 jakarta commons-beanutils 1.8.0 jakarta commons-collections 3.2.1 jakarta commons-logging 1.1.1 ezmorph 1.0.6 這些類庫據(jù)說在struts2里面都有。無語json-lib了,性能低不說,還依賴那么多類庫,轉(zhuǎn)換也不是很方便。 強力推薦使用jackson和gson,我測試用的源代碼http://download.csdn.net/source/3386315,時間太急了簡單總結(jié)下,希望下次遇到j(luò)son的時候能反映迅速點,有什么寫錯了希望糾正,謝謝! |
|