#Json
자바에서 JSON 포맷을 다루는 방법은 다양하지만
가장 간단한 방법인 'json-simple' 패키지를 이용하는 방법을 정리해보겠다.
json-simple 패키지를 사용하기 위해서 다음과 같은 메이븐(Maven) Dependency 설정이 필요하다.
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1</version> </dependency>
2.Json 파싱
JSON으로 표현된 데이터를 다루기 위해서
json-simple 패키지에서 다음 클래스들을 사용하면 된다.
JSONParser, JSONObject, JSONArray
String json1 = “{\\”name\\”:\\”Dave\\”, \\”nationality\\”:\\”korea\\”}”;
String json2 = “[{ ... }, {....}]”;
JSONParser parser = new JSONParser();
Object object = (JSONObject)parser.parse(json1)
If (object instanceof JSONArray) {
JSONArray jsonArray = (JSONArray)object;
// jsonArray 클래스를 이용한 처리
}
Else if (object instance JSONObject) {
JSONObject jsonObject = (JSONObject)object;
// jsonObject 클래스를 이용한 처리
}
Else {
// Other types
}
2-1) JSONParser 클래스를 이용해 json 문자열 파싱
2-2) 파싱된 결과는 JSONObject 타입의 객체일 수도 있고
리턴받은 객체가 JSONObject인 경우를 생각해보자. 다음의 JSON 문자열이 있다고 하자.
{ "name" : "dave", "department" : { "name" : "hr", "location" : "seoul" }}
JSON 객체에서 name 값을 얻어오기 위해서 get 메소드를 사용하면 됨.
JSONObejct jsonObject = (JSONObject)parser.parse(json);
String name = (String)jsonObject.get("name");
System.out.println(name);
2-3) 파싱된 결과는 JSONArray 타입의 객체일 수도 있음.
JSONArray 객체의 경우 다음과 같은 JSON을 파싱하면 얻을 수 있다.
[ { "name" : "dave", "department" : {"name" : "hr", "location" : "seoul"}}, {"name" : "paul", "department" : {"name" : "development", "location" : "tokyo"}}]
두 개의 JSON 객체를 하나의 JSON 배열로 묶어 놓은 개념이다. 사용법은 JSONObject와 비슷하다.
JSONArray jsonArray = (JSONArray)parser.parse(json);
JSONObject jsonObject = (JSONObject)jsonArray.get(1);
String name = jsonObject.get("name");
System.out.println(name);
다만 배열이기 때문에 get() 메소드의 인자로 엘리먼트의 이름이 아니라 몇 번째 엘리면트를 가지고 올 것인지 인덱스 숫자를 입력하게 된다. 역시 리턴되는 결과는 Object 타입이며 instanceof 로 확인하고 사용하면 된다.