一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java中幾個json工具分析

 hkls0003 2018-07-06

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
  1. public class JBean {  
  2.   
  3.     private int B_int;  
  4.   
  5.     private String B_String;  
  6.   
  7.     private List B_List;  
  8.   
  9.     private JBeanSub1 B_Object;//子對象  
  10.   
  11.    
  12.   
  13.     private static final String jDate = "{/"b_int/":1988,/"b_String/":/"sheep/",/"b_List/":[/"List1/",/"List2/",/"List3/"],/"b_Object/":{/"sub_int/":2012}}";  
  14.   
  15.    
  16.   
  17.     public void initBean(){  
  18.   
  19.         this.setB_int(1988);  
  20.   
  21.         this.setB_String("sheep");  
  22.   
  23.         this.B_List = new ArrayList();  
  24.   
  25.         this.B_Object = new JBeanSub1();  
  26.   
  27.    
  28.   
  29.         this.B_List.add("List1");  
  30.   
  31.         this.B_List.add("List2");  
  32.   
  33.         this.B_List.add("List3");  
  34.   
  35.    
  36.   
  37.         this.B_Object.setSub_int(2012);  
  38.   
  39. }  
  40.   
  41.    
  42.   
  43. Getter  and  setter……  
  44.   
  45. }  
  46.   
  47.    
  48.   
  49. class JBeanSub1{  
  50.   
  51. private int Sub_int;  
  52.   
  53.    
  54.   
  55. Getter  and  setter……  
  56.   
  57. }  
 

JBean2代碼如下:

把JBean的屬性頭字母全部改成小寫,然后用IDE自動生成setter和getter。

 

Jackson使用實例

(Json to bean)

[java] view plain copy
  1. ObjectMapper mapper = new ObjectMapper();  
  2.   
  3. JBean bean = mapper.readValue(JBean.getjDate(), JBean.class);  
 

 

(Bean to json)

[java] view plain copy
  1. JBean bean = new JBean();  
  2.   
  3. bean.initBean();  
  4.   
  5. StringWriter sw = new StringWriter();  
  6.   
  7. JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);  
  8.   
  9. mapper.writeValue(gen, bean);  
  10.   
  11. gen.close();  
  12.   
  13. String json = sw.toString();  
 

 

嵌套使用List和Object的情況下,jackson依然能準(zhǔn)確轉(zhuǎn)換,唯一不足之處就是無論bean屬性的開頭字符是大寫還是小寫,被jackson轉(zhuǎn)換成字符串后首字母都是小寫的了。

Gson使用實例

(json to bean)

[java] view plain copy
  1. Gson gson = new Gson();  
  2.   
  3. JBean2 bean = gson.fromJson(JBean.getjDate(), JBean2.class);  
 

 

(bean to json)

[java] view plain copy
  1. JBean2 bean = new JBean2();  
  2.   
  3. bean.initBean();  
  4.   
  5. System.out.println(gson.toJson(bean));  
 

 

使用很簡單,bean小寫字母開頭時,由json轉(zhuǎn)bean才能成功。

JSON_LIB使用實例

(json to bean)

[java] view plain copy
  1. JBean2 bean = new JBean2();  
  2.   
  3. bean.initBean();  
  4.   
  5. JSONObject obj = JSONObject.fromObject(bean);  
  6.   
  7. System.out.println(JSONArray.fromObject(bean).toString());  
 

(bean to json)

[java] view plain copy
  1. JBean2 bean = new JBean2();  
  2.   
  3. bean.initBean();  
  4.   
  5. System.out.println(JSONObject.fromObject(bean));  
  6.   
  7. System.out.println(JSONArray.fromObject(bean).toString());  
 

 

對嵌套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的時候能反映迅速點,有什么寫錯了希望糾正,謝謝!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美精品日韩精品一区| 日本精品中文字幕人妻| 欧美日韩黑人免费观看| 日本午夜精品视频在线观看| 国产日韩精品欧美综合区| 欧美一区二区在线日韩| 国产熟女一区二区三区四区| 国产日韩欧美在线亚洲| 国产日韩精品欧美综合区| 国产一级精品色特级色国产| 午夜国产精品福利在线观看| 亚洲另类欧美综合日韩精品| 亚洲国产av精品一区二区| 欧美色欧美亚洲日在线| 日韩精品一区二区一牛| 微拍一区二区三区福利| 欧美日韩国产精品第五页| 日本成人三级在线播放| 国产精品尹人香蕉综合网| 成人免费在线视频大香蕉| 激情丁香激情五月婷婷| 精品高清美女精品国产区| 午夜激情视频一区二区| 国产成人午夜在线视频| 九九热在线视频精品免费| 日韩精品一区二区三区射精| 国产不卡一区二区四区| 午夜久久精品福利视频| 狠色婷婷久久一区二区三区| 正在播放玩弄漂亮少妇高潮| 欧美一区二区三区十区| 黄男女激情一区二区三区| 国产亚州欧美一区二区| 国产麻豆精品福利在线| 草草草草在线观看视频| 国产激情一区二区三区不卡| 欧美日韩综合在线精品| 好吊妞视频只有这里有精品| 蜜桃臀欧美日韩国产精品| 老司机激情五月天在线不卡| 国产传媒欧美日韩成人精品|