先來看看JSON:
什么是JSON:
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。
JSON是用字符串來表示Javascript對象,例如可以在Servlet中發送一個JSON格式的字符串給客戶端Javascript,Javascript可以執行這個字符串,得到一個Javascript對象。
XML也可以用來作為數據交換,前面已經學習過在Servlet中發送XML給Javascript,然后Javascript再去解析XML。
JSON對象語法:
------數據在名稱/值對中
------數據由逗號分隔
------花括號保存對象
------方括號保存數組
var person = {"name":"zhangSan", "age":"18", "sex":"male"};
alert(person.name + ", " + person.age + ", " + person.sex);
注意,key也要在雙引號中!JSON值:
------數字(整數或浮點數)
------字符串(在雙引號中)
------邏輯值(true 或 false)
------數組(在方括號中)
------對象(在花括號中)
------null
var person = {"name":"zhangSan", "age":"18", "sex":"male", "hobby":["cf", "sj", "ddm"] };
alert(person.name + ", " + person.age + ", " + person.sex + ", " + person.hobby);
帶有方法的JSON對象:
var person = {"name":"zhangSan", "getName":function() {return this.name;}};
alert(person.name);
alert(person.getName());
JSON與XML比較:
------可讀性:XML勝出;
------解碼難度:JSON本身就是JS對象(主場作戰),所以簡單很多;
------流行度:XML已經流行好多年,但在AJAX領域,JSON更受歡迎。把Java對象轉換成JSON對象:
apache提供的json-lib小工具,它可以方便的使用Java語言來創建JSON字符串。也可以把JavaBean轉換成JSON字符串。
json-lib的核心jar包有:
------json-lib.jar
json-lib的依賴jar包有:
------commons-lang.jar
------commons-beanutils.jar
------commons-logging.jar
------commons-collections.jar
------ezmorph.jar
json-lib中的核心類:
在json-lib中只有兩個核心類:
------JSONObject;
------JSONArray;
JSONObject:
JSONObject類本身是一個Map,所以學習它很方便。
JSONObject jo = new JSONObject();
jo.put("name", "zhangSan");
jo.put("age", "18");
jo.put("sex", "male");
System.out.println(jo.toString()); Person person = new Person("liSi", 18, "female");
JSONObject jo = JSONObject.fromObject(person) ;
System.out.println(jo.toString());Map map = new HashMap();
map.put("name", "wangWu");
map.put("age", "81");
map.put("sex", "male");JSONObject jo = JSONObject.fromObject(map) ;
System.out.println(jo.toString());String xml = "<person><name>zhaoLiu</name><age>59</age><sex>female</sex></person>";
XMLSerializer serial = new XMLSerializer();
JSONObject jo = (JSONObject)serial.read(xml);
System.out.println(jo.toString());
JSONArray:
JSONArray本身是一個List,所以使用起來很方便。
JSONArray ja = new JSONArray();
Person p1 = new Person("zhangSan", 18, "male");
Person p2 = new Person("liSi", 23, "female");
ja.add(p1);
ja.add(p2);System.out.println(ja.toString());Person p1 = new Person("zhangSan", 18, "male");
Person p2 = new Person("liSi", 23, "female");
List<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);JSONArray ja = JSONArray.fromObject(list) ;System.out.println(ja.toString());Person p1 = new Person("zhangSan", 18, "male");
Person p2 = new Person("liSi", 23, "female");
Person[] persons = {p1, p2};JSONArray ja = JSONArray.fromObject(persons) ;System.out.println(ja.toString());
JS解釋服務器發送過來的JSON字符串:
服務器發送過來JSON字符串后,客戶端需要對其進行解析。這時客戶端需要使用eval()方法對JSON字符串進行執行!但要注意,eval()方法在執行JSON時,必須把JSON字符串使用一對圓括號括起來。
var json = "{\"name\":\"zhangSan\", \"age\":\"18\", \"sex\":\"male\"}";
var person = eval("(" + json + ")");
alert(person.name + ", " + person.age + ", " + person.sex);
END