1. 语法

JSONJavaScriptObject Notation)一种简单的数据格式,比xml更轻巧。JSONJavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。
JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔

   规则如下:

       1)映射用冒号(“:”)表示。名称:

       2)并列的数据之间用逗号(“,”)分隔。名称1:1,名称2:2

       3)映射的集合(对象)用大括号(“{}”)表示。{名称1:1,名称2:2}

       4)并列数据的集合(数组)用方括号(“[]”)表示。

         [

           {名称1:,名称2:2},

           {名称1:,名称2:2}

         ]

      元素值可具有的类型:string,number, object, array, true, false, null

2. 解析Json

JSON只是一种文本字符串。它被存储在responseText属性中
为了读取存储在responseText属性中的JSON数据,需要根据JavaScripteval语句。函数eval 会把一个字符串当作它的参数然后这个字符串会被当作JavaScript代码来执行。因为JSON 的字符串就是由 JavaScript代码构成的,所以它本身是可执行的.
例子一:
 <script language="JavaScript">
     var people ={"firstName": "Brett", "lastName":"McLaughlin", email": "brett@newInstance.com" };
     alert(people.firstName);
     alert(people.lastName);
     alert(people.email);
 </script>
例子二:
 <script language="JavaScript">
      var people =[
                     {"firstName": "Brett","email": "brett@newInstance.com" },
                     {"firstName": "Mary","email": "mary@newInstance.com" }
                ];

    alert(people[0].firstName);
    alert(people[0].email);
    alert(people[1].firstName);
    alert(people[1].email); 
 </script>
例子三:
 <script language="JavaScript">
    var people ={
            "programmers": [
            { "firstName": "Brett", "email": "brett@newInstance.com" },
            { "firstName": "Jason",  "email": "jason@servlets.com" },
            { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
           ],
          "authors": [
            { "firstName": "Isaac",  "genre": "science fiction" },
            { "firstName": "Tad", "genre": "fantasy" },
            { "firstName": "Frank",  "genre": "christian fiction" }
           ],
          "musicians": [
            { "firstName": "Eric",  "instrument": "guitar" },
            { "firstName": "Sergei", "instrument": "piano" }
           ]};
    window.alert(people.programmers[1].firstName);
    window.alert(people.musicians[1].instrument);
 </script>

3. Json的优缺点

优点:
作为一种数据传输格式,JSONXML 很相似,但是它更加灵巧。
JSON不需要从服务器端发送含有特定内容类型的首部信息。
缺点:
语法过于严谨
代码不易读
eval函数存在风险
4. 示例:

bean对象  province.java

public class Province {

	private Integer id;
	private String province;
	public Province(Integer id,String province) {
		this.id = id;
		this.province = province;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
}
处理请求的JsonServlet.java,JSONArray 需要导入json的第三方包json-lib-2.3-jdk15.jar,及其依赖包。
public class JsonServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		//利用javabean来模拟数据库
		Province p1 = new Province(1, "吉林省");
		Province p2 = new Province(2, "辽宁省");
		Province p3 = new Province(3, "山东省");
		
		List<Province> list = new ArrayList<Province>();
		
		list.add(p1);
		list.add(p2);
		list.add(p3);
		
		JSONArray json = JSONArray.fromObject(list);
		
		//String json = "[{'province':'吉林省'},{'province':'辽宁省'},{'province':'山东省'}]";
		
		out.println(json.toString());		//响应始终以字符串形式
		
	}
}
显示页面 json.html








相关文章: