Java언어의 JSON 파서 기능을 하는 패키지는 http://www.json.org/ 에서 다운받으실 수 있습니다.
저는 그 중 하나인 json-lib 패키지를 다운받아 사용하였으며, 아래의 예제도 json-lib 패키지를 사용하였습니다.
아래의 그림은 www.json.org 홈페이지의 일부인데, 빨간색으로 표시된 패키지가 제가 다운받아 사용해보려고
애쓴 녀석들입니다. 제가 사용한 패키지는 Json-lib라고 붉은 색으로 표시되어 있습니다.
json-lib 패키지를 사용하시기 위해선 json-lib 패키지가 의존하고 있는 몇 개의 다른 패키지를 다운받아 사용하셔야 합니다.
파일 첨부해 두었으니 받아서 사용하시기 바랍니다.
첨부된 파일 중 json-lib-2.3-jdk15.jar가 바로 json-lib 패키지 입니다.
그럼 이제 아주아주 간단하면서도 유용하게 사용하실 수 있는 예제를 작성하겠습니다.
/* Java 단 소스 */
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class TestJSON extends HttpServlet{
...
protected void doPost(..., ...) ...{
JSONObject jsonObj = new JSONObject();
jsonObj.put("key1", "value1");
jsonObj.put("key2", "value2");
jsonObj.put("key3", "value3");
}
PrintWriter writer = response.getWriter();
writer.print(jsonObj.toString());
writer.close();
return;
}
불필요한 소스는 모두 빼고 붉은색 글자로 쓰여진 코드만 보시면 됩니다.
JSONObject 객체를 생성하고 그 안에 put(..., ...) 메소드를 사용하여 값을 하나씩 집어 넣습니다.
위의 예제에서 넣은 값을 toString() 메소드를 통하여 String 객체로 변환하면 아래와 같은 값이 됩니다.
{"key1":"value1","key2":"value2","key3":"value3"}
만약 값에 배열을 넣고 싶으시다면 JSONArray를 사용하시면 됩니다.
JSONArray jsonArray = new JSONArray();
jsonArray.element(0, "array1");
jsonArray.element(1, "array2");
jsonObj.put("key4", jsonArray);
위와 같이 작성하시고 toString()을 통해 출력해보시면
{"key1":"value1","key2":"value2","key3":"value3","key4":["array1","array2"]}
와 같이 출력될 겁니다.
그럼 이제 웬만한 값은 모두 client단으로 전달할 수 있을 것 같습니다.
아래의 javascript를 통해 값을 받아 사용하는 방법을 보겠습니다.
// Javascript 단 소스.
var retVal = eval("("+xmlhttp.responseText+")");
음... 저게 답니다. JSON이 Javascript 기반이라는 것을 잊지 마세요.
물론 저 소스는 Ajax로 개발된 소스의 일부분입니다만 서버로부터 responseText 를 받아 사용한다는 것이
요점입니다. 이제 받은 데이터를 리터럴은 리터럴대로, 배열은 배열대로 사용하시면 됩니다.
참고로 json-lib 패키지는 부족하나마 설명이 조금은 달려있는 API doc.을 배포하였으니
위의 다운로드 사이트에서 찾아보시기 바랍니다(찾으시기에 절대로!절대로! 어렵지 않습니다).
이상으로 허접하나마 간단한 [JSON을 이용한 Java와 javascript의 값 전달]을 보셨습니다.
'Java' 카테고리의 다른 글
JDBC 커넥션부문 (0) | 2010.04.03 |
---|---|
상속과 다형성 (0) | 2009.12.27 |
자꾸 까먹는 3항 연산자. (0) | 2009.12.11 |
UTF-8로 개발환경을 도배하자. (0) | 2009.12.10 |
파일업로드 실습 (0) | 2009.11.28 |