json을 사용하는 대부분의 경우는 

서버에서 클라이언트로 json 또는 배열객체를 전달할때 주로 사용

하지만 반대로 

페이지에서 json 문자열을 만들어서 클라이언트에서 서버로 보낼 경우도 존재한다

이 두가지 예제를 모두 들어보도록 하겠다.

우선 라이브러리를 받도록 하자 


db를 조회한 가상의 데이터를 arraylist에 담아주고 해당 리스트로 json object를 만들어보자 


서버에서 json object 파싱하여 웹페이지로 전달


        ArrayList<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
	JSONObject jsonObj = new JSONObject();
	JSONObject jsonSubObj = null;
	JSONArray jsonArr = new JSONArray();
	Map<String, Object> map = null;
	map = new HashMap<String, Object>();
	map.put("data1","데이터1-1");
	map.put("data2","데이터1-2");
	list.add(map);
	
	map = new HashMap<String, Object>();
	map.put("data1","데이터2-1");
	map.put("data2","데이터2-2");
	list.add(map);
	
	map = new HashMap<String, Object>();
	map.put("data1","데이터3	-1");
	map.put("data2","데이터3-2");
	list.add(map);
	
	for(Map<String,Object> m : list) {
		Set<String> key = map.keySet();
		for (Iterator<String> iterator = key.iterator(); iterator.hasNext();) {
            String k = (String) iterator.next();
            String value = (String) map.get(k);
            jsonSubObj = new JSONObject();
            jsonSubObj.put(k, value);
		}
		jsonArr.add(jsonSubObj);
	}
	jsonObj.put("list",jsonArr);
	
	PrintWriter pw = response.getWriter();
	pw.print(jsonObj);
	pw.flush();
	pw.close();

위와 같은 형식으로 데이터를 파싱해서 클라이언트로 json 객체를 던져준다면 다음 화면같이 

값이 나올것이다.





만약 클라이언트쪽에서 ajax 호출하고 return type을 json으로 받았다면 object로 받을 수 있는 

것이다.


문자열을 json object로 변환하는 작업을 해보도록 하겠다..


클라이언트에서 받은 json 문자열을 object로 변환하기



         //서버에서 request.getparameter()로 받은 데이터라 가정
	String jsonStr = "{\"obj1\":\"obj-1\",\"obj2\":\"obj-2\",\"obj3\":\"obj-3\"}";
	if(jsonStr.substring(0,1).equals("{")) {
		 Object obj=JSONValue.parse(jsonStr);
		 JSONObject j=(JSONObject)obj;
		 System.out.println("===========JSON OBJECT STRING -> OBJECT===========");
		 System.out.println(j.get("obj1"));
		 System.out.println(j.get("obj2"));
		 System.out.println(j.get("obj3"));
	}
	
	//서버에서 request.getparameter()로 받은 데이터라 가정
	String jsonArrayStr = "[{\"data2\":\"데이터3-1\"},{\"data2\":\"데이터3-2\"},{\"data2\":\"데이터3-3\"}]";
	if(jsonArrayStr.substring(0,1).equals("[")) {
 		Object obj=JSONValue.parse(jsonArrayStr);
		JSONArray j=(JSONArray)obj;
		System.out.println("===========JSON ARRAY STRING -> FOR OBJECT===========");
		for(int i=0; i<j.size(); i++) {
			JSONObject json = (JSONObject)j.get(i);
			System.out.println(json.get("data2"));
		}
	}

서버로 임의의 string형 json object / json array 값을 넘겼다 가정하였을때 json object/array 

로 변경한 후 콘솔출력을 해보았다.




잘 뽑아진다 ㅎㅎ