qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Java中JSON的簡(jiǎn)單使用與前端解析

            一、JSON
            JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。 JSON采用完全獨(dú)立于語言的文本格式。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。
            JSON與XML的對(duì)比(引用自:sanpintian的CSDN博客):
            1、可讀性:JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。
            2、可擴(kuò)展性:XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,JSON不能的。
            3、編碼難度:XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。
            4、解碼難度:XML的解析得考慮子節(jié)點(diǎn)父節(jié)點(diǎn),讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點(diǎn)XML輸?shù)恼媸菦]話說。
            5、流行度:XML已經(jīng)被業(yè)界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個(gè)特定的領(lǐng)域,未來的發(fā)展一定是XML讓位于JSON。到時(shí)Ajax應(yīng)該變成Ajaj(Asynchronous Javascript and JSON)了。
            二、導(dǎo)包
            使用JSON需要導(dǎo)入以下包:
            commons-beanutils.jar
            commons-logging.jar
            commons-lang.jar
            commons-collection.jar
            ezmorph.jar
            json-lib.jar
            三、實(shí)現(xiàn)
            Book類的實(shí)現(xiàn):
          1  public class Book {
          2     private String name;
          3     private double price;
          4
          5     public String getName() {
          6         return name;
          7     }
          8
          9     public void setName(String name) {
          10         this.name = name;
          11     }
          12
          13     public double getPrice() {
          14         return price;
          15     }
          16
          17     public void setPrice(double price) {
          18         this.price = price;
          19     }
          20
          21     @Override
          22     public String toString() {
          23         return name+" "+price;
          24     }
          25 }
          1 /**
          2  * @author ZWQ
          3  * **/
          4 public class JsonTest {
          5     public static void main(String[] args) {
          6         //***********************************************************************
          7         // json基本測(cè)試
          8         {
          9             //新建一個(gè)JSON數(shù)組
          10             JSONArray jsonArray = new JSONArray();
          11             //新建一個(gè)JSON對(duì)象
          12             JSONObject json1 = new JSONObject();
          13             json1.put("id", "1");
          14             json1.put("name", "張三");
          15             json1.put("password", "123456");
          16             //將JSON對(duì)象添加到JSON數(shù)組中去
          17             jsonArray.add(json1);
          18
          19             JSONObject json2 = new JSONObject();
          20             json2.put("id", "2");
          21             json2.put("name", "李四");
          22             json2.put("password", "654321");
          23             jsonArray.add(json2);
          24             System.out.println("json數(shù)組基本測(cè)試:" + jsonArray);
          25
          26             //結(jié)果:
          27             //[{"id":"1","name":"張三","password":"123456"},{"id":"2","name":"李四","password":"654321"}]
          28         }
          29
          30         //***********************************************************************
          31         //將對(duì)象轉(zhuǎn)成JSON字符串
          32         {
          33             Book book = new Book();
          34             book.setName("Java入門教程");
          35             book.setPrice(52.3);
          36             //將Java對(duì)象轉(zhuǎn)成JSON對(duì)象
          37             JSONObject jsonObject = JSONObject.fromObject(book);
          38             System.out.println("從Object到JSONObject:" + jsonObject.toString());
          39
          40             //結(jié)果:
          41             //從Object到JSONObject:{"name":"Java入門教程","price":52.3}
          42         }
          43
          44         //***********************************************************************
          45         //將對(duì)象集合轉(zhuǎn)成JSON字符串
          46         {
          47             List<Book> list = new ArrayList<Book>();
          48             Book book1 = new Book();
          49             book1.setName("高等數(shù)學(xué)I");
          50             book1.setPrice(34.1);
          51             Book book2 = new Book();
          52             book2.setName("線性代數(shù)");
          53             book2.setPrice(12.7);
          54             list.add(book1);
          55             list.add(book2);
          56             //將List集合轉(zhuǎn)為JSON數(shù)組
          57             JSONArray jsonArray= JSONArray.fromObject(list);
          58             System.out.println("從Object集合到JSONArray:" + jsonArray.toString());
          59
          60             //結(jié)果:
          61             //從Object集合到JSONArray:[{"name":"高等數(shù)學(xué)I","price":34.1},{"name":"線性代數(shù)","price":12.7}]
          62         }
          63
          64         //***********************************************************************
          65         // 將JSON字符串轉(zhuǎn)為Java對(duì)象
          66         {
          67             String jsonString = "{name:'數(shù)據(jù)結(jié)構(gòu)',price:52.3}";
          68             JSONObject jsonObject = JSONObject.fromObject(jsonString);
          69             //將JSON對(duì)象轉(zhuǎn)為Java對(duì)象
          70             Book book = (Book) JSONObject.toBean(jsonObject, Book.class);
          71             System.out.println(book.toString());
          72
          73             //結(jié)果:
          74             //數(shù)據(jù)結(jié)構(gòu) 52.3
          75         }
          76
          77         //***********************************************************************
          78         //將JSON字符串轉(zhuǎn)為Java對(duì)象數(shù)組
          79         {
          80             // (2).Bean的數(shù)組
          81             String jsonsString = "[{name:'數(shù)據(jù)庫基礎(chǔ)',price:52.3},{name:'Oracle 11g精華',price:42.3}]";
          82             JSONArray jsonArray = JSONArray.fromObject(jsonsString);
          83             //將JSON數(shù)組轉(zhuǎn)為Java對(duì)象數(shù)組
          84             Book[] books = (Book[]) JSONArray.toArray(jsonArray, Book.class);
          85             for (Book b : books) {
          86                 System.out.println(b.toString());
          87             }
          88
          89             //結(jié)果:
          90             //數(shù)據(jù)庫基礎(chǔ) 52.3
          91             //Oracle 11g精華 42.3
          92         }
          93     }
          94 }
            四、前端解析
          1 //Jquery提供的獲取json的方法
          2 //使用前先導(dǎo)入Jquery
          3
          4 $('#button').click(function(){
          5     //url:請(qǐng)求的地址
          6     $.getJSON('url', {
          7         //id是需要傳的參數(shù)
          8         id: 1
          9         }, function(data) {//成功后data即為獲取的json字符串
          10             //例如data:[{"name":"高等數(shù)學(xué)I","price":34.1},{"name":"線性代數(shù)","price":12.7}]
          11             alert("第二本書是:"+data[1].name+"  價(jià)格是:"+data[1].price);
          12         });
          13 });

          posted on 2014-06-13 10:09 順其自然EVO 閱讀(1692) 評(píng)論(0)  編輯  收藏 所屬分類: web 前端性能測(cè)試

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 陇南市| 邛崃市| 五台县| 外汇| 广汉市| 巴中市| 浮山县| 瑞金市| 元阳县| 迭部县| 新平| 双鸭山市| 田东县| 蒙山县| 略阳县| 乌兰县| 白河县| 南华县| 海丰县| 舒城县| 三门峡市| 慈利县| 绥棱县| 三江| 广水市| 突泉县| 刚察县| 内黄县| 大埔区| 乐昌市| 临海市| 陆川县| 中西区| 丰顺县| 聂荣县| 伊宁市| 靖宇县| 江阴市| 大庆市| 华安县| 龙泉市|