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