1. 程式人生 > >解析JSON資料系列1:在網頁上顯示Json資料

解析JSON資料系列1:在網頁上顯示Json資料

Json的全稱:JavaScriptObjectNotation


Json的兩種構建結構:“名稱/值”對的集合、值的有序列表。


移動客戶端(android和iphone)接收返回的資料和平臺無關,平臺可以是Java、.net或者php。
移動客戶端請求伺服器端,一般是採用Json這種輕量級的形式。


JSON的資料格式:
JSON物件是一個無序的“‘名稱/值’對”集合。
一個物件以“{”(左括號)開始,“}”(右括號)結束。
每個“名稱”後跟一個“:”(冒號);“‘名稱/值’對”之間使用“,”(逗號)分隔。
如:{
       "name":"jackson",
       "age":100
    }
陣列是值(value)的有序集合。一個數組以“[”(左括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔
如:{
        “students”:
        [
            {"name":"jackson","age":100},
            {"name":"michael","age":51}
        ]
    }


這個例子採用的是伺服器端:(jsp+servlet)(生成Json的字串),客戶端:解析Json資料。在網頁上顯示Json的字串。


整體思路:新建一個web工程,定義一個實體類Person,在裡面定義三個欄位,定義它的建構函式,get、set方法,toString方法。定義一個JsonService類,在裡面定義getPerson方法返回一個Person物件,定義getlistPerson方法返回一個裝有Person型別的List物件,定義getListString方法返回一個裝有字串型別的List物件,定義getListMaps方法返回一個裝有Map型別的List物件。定義一個JsonTools類,在裡面寫一個構建Json字串的方法。定義一個TestJson類,在裡面定義main方法,在這個方法中呼叫createJsonString返回Json物件並輸出。定義一個servlet類JsonAction,在裡面把doGet方法中的程式碼改為this.doPost(request, response),在doPost方法中新增請求和接收的方式,呼叫createJsonString返回Json物件並輸出。

Person.java檔案:

public class Person {

	private int id;
	private String name;
	private String adress;

	public Person(int id, String name, String adress) {
		super();
		this.id = id;
		this.name = name;
		this.adress = adress;
	}

	public Person() {
		// TODO Auto-generated constructor stub
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAdress() {
		return adress;
	}

	public void setAdress(String adress) {
		this.adress = adress;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", adress=" + adress
				+ "]";
	}

}

JsonService.java檔案:

public class JsonService {

	public JsonService() {
		// TODO Auto-generated constructor stub
	}
	
	public Person getPerson(){
		Person person =new Person(1001,"jack","beijing");
		return person;
		
	}
	
	public List<Person> getlistPerson(){
		List<Person> list=new ArrayList<Person>();
		Person person1=new Person(1001,"jack","beijing");
		Person person2=new Person(1001,"rose","shanghai");
		list.add(person1);
		list.add(person2);
		
		return list;
	}
	
	public List<String> getListString(){
		List<String> list=new ArrayList<String>();
		list.add("北京");
		list.add("上海");
		list.add("廣州");
		return list;
	}

	public List<Map<String, Object>> getListMaps(){
		List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
		Map<String, Object> map1=new HashMap<String, Object>();
		map1.put("id", 1001);
		map1.put("name", "jack");
		map1.put("address", "beijing");
		Map<String, Object> map2=new HashMap<String, Object>();
		map2.put("id", 1002);
		map2.put("name", "rose");
		map2.put("address", "shanghai");
		list.add(map1);
		list.add(map2);
		return list;
	}
}

JsonTools.java檔案:

public class JsonTools {

	public JsonTools() {
		// TODO Auto-generated constructor stub
	}
	/**
	 * 
	 * @param key  表示json字串的頭資訊
	 * @param value  是對解析的集合的型別
	 * @return
	 */
	public static String createJsonString(String key,Object value){
		 JSONObject jsonObject=new JSONObject();
		 jsonObject.put(key, value);
		 return jsonObject.toString();
		 
	}

}
TestJson.java檔案:
public class TestJson {

	public TestJson() {
		// TODO Auto-generated constructor stub
	}
    
	public static void main(String[] args) {
		String msg="";
		JsonService service=new JsonService();
//		Person person=service.getPerson();
//		msg=JsonTools.createJsonString("person", person);
//		System.out.println(msg);
		msg=JsonTools.createJsonString("persons", service.getListMaps());
		System.out.println(msg);
	}
}

JsonAction.java檔案:

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

		this.doPost(request, response);
	}

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

		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		
		PrintWriter out = response.getWriter();
		String jsonString=JsonTools.createJsonString("person", service.getlistPerson());
		out.println(jsonString);
		out.flush();
		out.close();
	}