Java에서 JSON 사용하기

 

2년 전부터 데이터 통신시 자료 교환을 JSON 형식을 사용해서 주로 사용하고 있습니다.

데이터를 주고 받는데 별도의 프로토콜을 만들어되지 않아도 되고 받은 후에도 별도의 파싱 과정 없이 바로 받을 수 있어서 자주 사용하고 있습니다.

 

 

1. JSON 이란?

 

JSON 에 대한 설명은 공식 홈페이지나 위키에 가서 확인하는게 빠를거 같습니다.

 

JSON 공식 홈페이지 : http://www.json.org

 

아래 개요 사이트에 가면 친절하게 한국어로 적혀있습니다.

 

JSON 개요 : http://www.json.org/json-ko.html

 

JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999의 일부에 토대를 두고 있다. JSON은 완벽하게 언어로 부터 독립적이지만 C-family 언어 - C, C++, C#, Java, JavaScript, Perl, Python 그외 다수 - 의 프로그래머들에게 친숙한 관습을 사용하는 텍스트 형식이다. 이러한 속성들이 JSON을 이상적인 DATA-교환 언어로 만들고 있다.

 

... 라고 써 있습니다. 약간 어려운 듯 하지만, 실제 사용해보면 쉽고 간단합니다.

 

간추려서 말하면, JSON을 지원하는 여러 다양한 언어(C, C++, C#, Java, PHP, Javascript 등...)에서 자료를 쉽게 주고 받을 수 있다고 볼 수 있습니다.

 

 

2. Java - JSON

 

JSON 은 바로 사용하지 못하고 언어에 맞게 별도의 컴파일 과정을 거친 후, 사용할 수 있습니다.

C 의 경우 컴파일 후에 필요한 파일들 복사하고 헤더 파일을 등록 후에 사용하는 것 처럼, Java 에서도 제공된 라이브러리를 통해서 간단하게 사용할 수 있습니다.

 

여러 라이브러리 중에서 사용하기 간단한 것은 json-simple 라이브러리 인거 같았습니다.

 

json-simple 다운로드 : http://code.google.com/p/json-simple/

 

파일을 다운로드 받은 후,

Java에서 Project 생성 후, 아래와 같이 라이브러리를 등록해주면 됩니다.

 

 

 

3. json-simple 로 json 사용하기

 

사전에 TCP, UDP 통신등으로 데이터를 주고 받을 수 있도록 구현이 된 상태에서 진행하도록 합니다.

 

먼저 데이터를 넣는 방법입니다.

아래와 같이 JSONObject를 선언한 다음에 put을 통해서 데이터를 집어 넣어 줍니다.

 

JSONObject obj;

obj = new JSONObject();

obj.put("key1", "value1");
obj.put("key2", "value2");

 

위와 같이 만들어진 obj를 통신을 사용해서 보내고자 하는 곳으로 넘겨주면 됩니다.

 

받게 되는 곳에서는 위의 obj를 받게 됩니다.

이 때, 받은 자료를 value 라는 String 에 저장을 했습니다.

 

받은 데이터를 JSON 문법으로 해석합니다.

그 다음 get을 통해서 키를 입력하면 값을 받을 수 있습니다.

JSONObject jsonObj;
jsonObj = (JSONObject) JSONValue.parse(value);

String tmp;
tmp = (String) jsonObj.get("key2");

system.out.println(tmp);

 

위와 같이 했을 때, tmp 는 value2 라는 값을 가지게 됩니다.

 

 

~(^_ ^ )~

 

통신 프로그램을 만들게 될 때, 같은 언어가 아닌 다른 언어로 데이터를 보내야할 때가 있습니다.

C 에서 Java 로 데이터를 보내거나 Java에서 C++ 로 보낼 때 처럼요.

서로 데이터를 주고 받기 위해서는 데이터 구조를 맞춰야 하는데, 종종 힘든 경우가 생깁니다.

 

이런 경우 JSON을 통한다면, 데이터를 빠르고 쉽게 주고 받을 수 있기 때문에 자주 사용하고 있습니다. ^^