javascript解析json

json對象的定義和基本的訪問:

<script type="text/javascript">
		window.onload = function(){
			/*			
			var person = {"name":"zhangsan","age":24};
			alert(person.name);
			alert(person.age);

			var person = {"name":"zhangsan","age":24,"phone":{"guhua":123,"shouji":234}};
			alert(person.phone.guhua);
			alert(person.phone.shouji);

			var person = {"name":"張三","age":20,
						  "phone":{"guhua":123,"shouji":1234},
						  "address":[{"home":"shanghai1","code":11},{"compony":"泉城廣場1","code":22}]}
			alert(person.address[0].home);
			alert(person.address[1].compony);
			*/
			var persons = [
				               {
					               "name":"張三","age":20,
					               "phone":{"guhua":123,"shouji":1234},
					               "address":[{"jiating":"玉函路1"},{"gongsi":"泉城廣場1"}]
							   },
				               {"name":"李四","age":22,
					            "phone":{"guhua":423,"shouji":4234},
					            "address":[{"jiating":"玉函路2"},{"gongsi":"泉城廣場2"}]
							   }
					   	  ];
		   	  /*注意:不要把冒號寫成中文的*/
		   	  
		    alert(persons[0].phone.guhua);
		   	alert(persons[1].address[0].jiating);
		
		}
	</script>

利用ajax與服務器交互,返回json:

<script type="text/javascript" src="json.js"></script>

  <body>
    <input type="button" id="button" value="確定">
    <div id="div1"></div>
    <div id="div2"></div>
    <div id="div3"></div>
    <div id="div4"></div>
  </body>

function ajaxFunction(){
	/*
	 * 創建XMLHttpRequest對象
	 */
	var xmlhttp;
	try{//ff,opear8.0+,safari
		xmlhttp = new XMLHttpRequest();
	}catch(e){
		try{//ie
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				
			}
		}
	}
	return xmlhttp;
}
window.onload = function(){
	document.getElementById("button").onclick = function(){
		
		//1、創建XMLHttpRequest對象
		var xmlReq = ajaxFunction();
		
		//2、接收服務器端的響應
		xmlReq.onreadystatechange = function(){
			if(xmlReq.readyState==4&&xmlReq.status==200){
				//responseText接收返回的json數據
				var data = xmlReq.responseText;
				//將字符串轉化爲javascript識別的對象
				var persons = eval("("+data+")");
				//json對象屬性的訪問
				document.getElementById("div1").innerHTML=persons[0].name;
				document.getElementById("div2").innerHTML=persons[1].name;
				document.getElementById("div3").innerHTML=persons[2].name;
				document.getElementById("div4").innerHTML=persons[3].name;
			}
		}
		
		//3、打開和服務器的連接
		xmlReq.open("post","/json/personServlet",true);
		//post提交時需要加上下面的代碼
		xmlReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		
		//4、發送數據
		xmlReq.send(null);
		
	}
}

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import entity.Person;

public class PersonServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		Person p1 = new Person("小強",20,"nan",123456);
		Person p2 = new Person("旺財",34,"nv",156443);
		Person p3 = new Person("奔波了霸",40,"nv",165566);
		Person p4 = new Person("霸波了奔",25,"nan",197745);
		
		List list = new ArrayList();
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		//假設list是通過數據庫查詢得到的
/*******************************************************************************************/
		//將list中的姓名和年齡以json的格式返回客戶端瀏覽器
		/*
		 * 導入json相關的jar包
		 */
		
		JsonConfig config = new JsonConfig();
		config.setExcludes(new String[]{"sex","phone","age"});
		JSONArray jsonArray = JSONArray.fromObject(list,config);
		String json = jsonArray.toString();
		out.print(json);
		System.out.println(json);
		out.close();
		
	}
}


package entity;
public class Person {
	private String name;
	private Integer age;
	private String sex;
	private Integer phone;
	public Person(String name, Integer age, String sex, Integer phone) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.phone = phone;
	}
	public Person() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getPhone() {
		return phone;
	}
	public void setPhone(Integer phone) {
		this.phone = phone;
	}
}

  <servlet>
    <servlet-name>PersonServlet</servlet-name>
    <servlet-class>servlet.PersonServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PersonServlet</servlet-name>
    <url-pattern>/personServlet</url-pattern>
  </servlet-mapping>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章