#Json

자바에서 JSON 포맷을 다루는 방법은 다양하지만

가장 간단한 방법인 'json-simple' 패키지를 이용하는 방법을 정리해보겠다.

1. Maven 설정

2. Json 파싱

  1. Maven 설정

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 로 확인하고 사용하면 된다.