Java 클래스를 다른 곳으로 전송할 때 사용할 수 있는 직렬화(Serialize) 포맷으로 JSON이나 XML 같은 텍스트 포맷을 사용하는 경우가 많다. 문자열을 사용하는 만큼 데이터를 처리하는데 상당히 높은 수준의 유연성을 제공하기 때문이다.
자바 객체를 JSON으로 바꾸는 작업은 Gson 이라는 패키지를 이용하면 쉽게 할 수 있다. Gson은 구글에서 만든 자바 오브젝트의 직렬화/역직렬화 라이브러리다. 내부적으로 리플렉션(Reflection)을 사용하기 때문에 사용자가 귀찮게 이런저런 옵션을 넣어주지 않아도 되어 편하다.
Maven 설정
Gson을 사용하기 위한 Maven 설정은 다음과 같다.
<dependency>
<groupId>com.google.code.gson<groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
Java 객체를 JSON으로 직렬화(Serialize)
다음과 같은 Java 객체가 있다고 하자.
public class Employee {
private String name;
private String department;
private int employeeNumber;
}
Employee 객체를 만들고 JSON 문자열로 만들어주는 메소드는 다음과 같이 작성할 수 있다.
import com.google.gson.Gson;
public void getJSONFromObject() {
Employee employee = new Employee();
employee.setName(“Dave”);
employee.setDepartment(“HR”);
employee.setEmployeeNumber(123);
Gson gson = new Gson();
String json = gson.toJson(employee);
System.out.println(json);
}
결과는 다음과 같다.
{“name”:”Dave”, “department”:”HR”, “employeeNumber”:123}
JSON 파싱하기
JSON 문자열을 파싱하여 정보를 확인 할 수 있다. Gson의 JsonParser 클래스를 이용한다.
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
public void parseJSON() {
String json = "{\"name\":\"Dave\",\"department\":\"HR\",\"employeeNumber\":123}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(json);
String name = element.getAsJsonObject().get("name").getAsString();
String department = element.getAsJsonObject().get("department").getAsString();
String number = element.getAsJsonObject().get("department").getAsString();
System.out.println("name=" + name);
System.out.println("department=" + department);
System.out.println("number=" + number);
}
출력은 다음과 같다
name=Dave
department=HR
number=123
Gson을 이용하면 JSON 데이터를 쉽게 사용할 수 있다.
JSON을 자바 객체로 만들기
JSON을 읽어서 자바 객체로 만들 수도 있다.
import com.google.gson.Gson;
public void getObjectFromJSon() {
String json = "{\"name\":\"Dave\",\"department\":\"HR\",\"employeeNumber\":123}";
Gson gson = new Gson();
Employee employee = gson.fromJson(json, Employee.class);
System.out.println("name=" + employee.getName());
System.out.println("department=" + employee.getDepartment());
System.out.println("number=" + employee.getEmployeeNumber());
}
출력된 결과는 다음과 같다.
name=Dave
department=HR
number=123
JSON 객체 직접 만들기
혹은 직접 JSON을 만들 수도 있다.
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public void makeJSon() {
Gson gson = new Gson();
JsonObject obj = new JsonObject();
obj.addProperty("name", "Dave");
obj.addProperty("department", "HR");
obj.addProperty("employeeNumber", 123);
String json = gson.toJson(obj);
System.out.println(json);
}
출력된 결과는 다음과 같다.
{"name":"Dave","department":"HR","employeeNumber":123}
JSONSimple과 Gson 둘 다 사용해본 결과 Gson을 사용했을 때 코드가 더 깔끔하게 나왔다. Gson 이외에도 Jackson 라이브러리도 있는데 나중에 써볼 기회가 되면 각각의 장점을 정리해봐도 좋을 것 같다.
댓글