乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JSON以及Java轉(zhuǎn)換JSON的方法

       liuyang_inf 2014-07-04

      本文主要講述如下幾個內(nèi)容:

      1、JSON定義以及JSON的特性

      2、如何在JavaScript中解釋JSON格式數(shù)據(jù)

      3、如何在Java代碼中使用JSON(講對象轉(zhuǎn)換成JSON對象以及解釋JSON字符串)

      一、JSON

         w3c上對JSON有比較詳細(xì)的介紹,鏈接http://www.w3school.com.cn/json/index.asp.下面僅講述重要的幾點。

      Json是 JavaScript 對象表示法(JavaScript Object Notation),是輕量級的文本數(shù)據(jù)交換格式,具有層級結(jié)構(gòu)(值中存在值), 數(shù)據(jù)可使用 AJAX 進行傳輸,獨立于語言,具有自我描述性,比XML更小更快更容易解析。JSON格式字符串轉(zhuǎn)化為JavaScript對象無需解析器, JSON 使用 JavaScript 語法,使用JavaScript的eval()函數(shù)可生成JavaScript對象。

      下面給出JSON格式的數(shù)據(jù),非常清晰,無需多做解釋,語法請閱讀官方文檔。

      標(biāo)準(zhǔn)JSON格式數(shù)據(jù)

      { "firstName":"John" , "lastName":"Doe" }
      標(biāo)準(zhǔn)JSON格式數(shù)組數(shù)據(jù)
      {
      "employees": [
      { "firstName":"John" , "lastName":"Doe" },
      { "firstName":"Anna" , "lastName":"Smith" },
      { "firstName":"Peter" , "lastName":"Jones" }
      ]
      }
      或直接賦值給變量:
      var employees = [
      { "firstName":"Bill" , "lastName":"Gates" },
      { "firstName":"George" , "lastName":"Bush" },
      { "firstName":"Thomas" , "lastName": "Carter" }
      ];


      二、在JavaScript中解釋JSON數(shù)據(jù)

      JSON 最常見的用法之一,是從 web 服務(wù)器上讀取 JSON 數(shù)據(jù)(作為文件或作為 HttpRequest),將 JSON 數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對象,然后在網(wǎng)頁中使用該數(shù)據(jù)。

      下面直接給出代碼示例:

      1. <pre name="code" class="html"><html>  
      2. <head>  
      3. </head>  
      4. <script type="text/javascript">  
      5. function  testjson(){  
      6.   
      7. //Json格式的字符串  
      8. var txt = '{ "employees" : [' +  
      9. '{ "firstName":"Bill" , "lastName":"Gates" },' +  
      10. '{ "firstName":"George" , "lastName":"Bush" },' +  
      11. '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';  
      12.   
      13. //使用eval函數(shù)轉(zhuǎn)換成JSON對象  
      14. //eval() 函數(shù)使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤:  
      15. var obj = eval ("(" + txt   
      16.     + ")");  
      17. //通過對象名,然后根據(jù)數(shù)組下標(biāo)以及屬性名取值  
      18. alert(obj.employees[0].firstName);  
      19. }  
      20.   
      21. </script>  
      22. <body>  
      23.     <a href="" onclick="testjson()">Click me!</a>  
      24. </body>  
      25. </html>  

      直接保存為后綴名為html或htm的文件,用瀏覽器打開,就可以測試運行結(jié)果了。

      三、Java操作JSON

      1、Josn-lib

      JSON-lib這個Java類包用于把bean,map和XML轉(zhuǎn)換成JSON并能夠把JSON轉(zhuǎn)回成bean和DynaBean。

      下載地址:http://json-lib./

      還要需要的第3方包:

      rg.apache.commons(3.2以上版本)

      org.apache.oronet.sf.

      ezmorph(ezmorph-1.0.4.jar)

      nu.xom

      下面直接給出代碼:

      1. package com.doyeden.json;  
      2.   
      3. import java.util.ArrayList;  
      4. import java.util.HashMap;  
      5. import java.util.List;  
      6. import java.util.Map;  
      7.   
      8. import org.apache.commons.beanutils.PropertyUtils;  
      9.   
      10. import net.sf.json.JSONArray;  
      11. import net.sf.json.JSONObject;  
      12. import net.sf.json.xml.XMLSerializer;  
      13.   
      14. public class TestJson {  
      15.     public static void main(String[] args) {  
      16.   
      17.         // 1. List  
      18.         boolean[] booleanArray = new boolean[] { falsefalsetruefalse };  
      19.         JSONArray ja = JSONArray.fromObject(booleanArray);  
      20.         System.err.println(ja);  
      21.   
      22.         List list = new ArrayList();  
      23.         list.add("first");  
      24.         list.add("second");  
      25.         JSONArray jsonArray2 = JSONArray.fromObject(list);  
      26.         System.out.println(jsonArray2);  
      27.   
      28.         JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']");  
      29.         System.out.println(jsonArray3);  
      30.   
      31.         // 2. Map  
      32.         Map map = new HashMap();  
      33.         map.put("name""json");  
      34.         map.put("bool", Boolean.TRUE);  
      35.         map.put("int"new Integer(1));  
      36.         map.put("arr"new String[] { "a""b" });  
      37.         map.put("func""function(i){ return this.arr[i]; }");  
      38.         JSONObject json = JSONObject.fromObject(map);  
      39.         System.out.println(json);  
      40.   
      41.         // 3. JSON Bean  
      42.         JSONObject jsonObject = JSONObject.fromObject(new JsonBean("kevin",  
      43.                 "Male"));  
      44.         System.out.println(jsonObject);  
      45.   
      46.         // 4. Json Beans  
      47.         List<JsonBean> lbs = new ArrayList<JsonBean>();  
      48.         JsonBean j1 = new JsonBean("kevin""Male");  
      49.         JsonBean j2 = new JsonBean("maimai""Femal");  
      50.         lbs.add(j1);  
      51.         lbs.add(j2);  
      52.         JSONArray ja_beans = JSONArray.fromObject(lbs);  
      53.         System.out.println(ja_beans);  
      54.   
      55.     }  
      56. }  

      下面的類的get和set方法必須有才可以

      1. package com.doyeden.json;  
      2.   
      3. public class JsonBean {  
      4.     private String name;  
      5.     private String sex;  
      6.       
      7.     public JsonBean() {  
      8.         super();  
      9.     }  
      10.     public JsonBean(String name, String sex) {  
      11.         super();  
      12.         this.name = name;  
      13.         this.sex = sex;  
      14.     }  
      15.     public String getName() {  
      16.         return name;  
      17.     }  
      18.     public void setName(String name) {  
      19.         this.name = name;  
      20.     }  
      21.     public String getSex() {  
      22.         return sex;  
      23.     }  
      24.     public void setSex(String sex) {  
      25.         this.sex = sex;  
      26.     }  
      27.       
      28. }  

      程序運行結(jié)果:

      1. [false,false,true,false]  
      2. ["first","second"]  
      3. ["json","is","easy"]  
      4. {"arr":["a","b"],"int":1,"name":"json","func":function(i){ return this.arr[i]; },"bool":true}  
      5. {"name":"kevin","sex":"Male"}  
      6. [{"name":"kevin","sex":"Male"},{"name":"maimai","sex":"Femal"}]  
      2、 目前比較流行的fast-json解析 ,更多fast-json請自行查閱文檔

      阿里巴巴FastJson是一個Json處理工具包,包括“序列化”和“反序列化”兩部分,它具備如下特征:
      速度最快,測試表明,fastjson具有極快的性能,超越任其他的Java Json parser。包括自稱最快的JackJson;
      功能強大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自??;無依賴,能夠直接運行在

      Java SE 5.0以上版本;支持Android;開源 (Apache 2.0)

      Fastjson API入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成。

      public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray 
      public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
      public static final  T parseObject(String text, Class clazz); // 把JSON文本parse為JavaBean 
      public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
      public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
      public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本 
      public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本 
      public static final Object toJSON(Object javaObject); 將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。

        實例代碼:

      (需要導(dǎo)入fastjson的jar包)

      1. package com.doyeden.json.fastjson;  
      2.   
      3. import java.util.ArrayList;  
      4. import java.util.List;  
      5.   
      6. import com.alibaba.fastjson.JSON;  
      7. import com.doyeden.json.JsonBean;  
      8.   
      9. public class Test {  
      10.     public static void main(String[] args) {  
      11.           
      12.         //1 parse bean to json text  
      13.         JsonBean jb=new JsonBean("kevin","Male");  
      14.         System.out.println(JSON.toJSONString(jb));  
      15.           
      16.         //2 parse list to json array  
      17.         List<JsonBean> ljs=new ArrayList<JsonBean>();  
      18.         JsonBean jb1=new JsonBean("kevin","Male");  
      19.         JsonBean jb2=new JsonBean("maimai","Female");  
      20.         ljs.add(jb2);  
      21.         ljs.add(jb1);  
      22.         System.out.println(JSON.toJSONString(ljs));  
      23.           
      24.         //3 parse json text to bean  
      25.         String s="{\"name\":\"greg\",\"sex\":\"Male\"}";  
      26.         JSON jO=JSON.parseObject(s);  
      27.         JsonBean j=JSON.toJavaObject(jO, JsonBean.class);  
      28.         System.out.println(j.getName());  
      29.           
      30.     }  
      31. }  

      結(jié)果:

      {"name":"kevin","sex":"Male"}
      [{"name":"maimai","sex":"Female"},{"name":"kevin","sex":"Male"}]
      greg

      3、其他方式,例如 org-lib等,使用方法跟上述兩種方式非常相似。就不做更多介紹了。個人推薦還是使用fast-json。

      總結(jié):本文講述了JSON格式數(shù)據(jù)以及如何在JavaScript和Java代碼中操作JSON格式數(shù)據(jù),可以發(fā)現(xiàn),因為JSON自解釋性,輕量級,體積小,跨平臺等特點,JSON格式數(shù)據(jù)非常適合作為和后端數(shù)據(jù)交互的格式。JavaScript本身就可以解釋JSON,這樣就省去了很多第三方庫,java中,關(guān)于講JSON轉(zhuǎn)換成Java對象以及講Java對象和對象數(shù)組轉(zhuǎn)換成JSON格式數(shù)據(jù)的類庫其實有很多,但是目前來說最快的是fastjson.

        本站是提供個人知識管理的網(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ā)表

        請遵守用戶 評論公約

        類似文章 更多