본문 바로가기
카테고리 없음

[Gson 사용법] 자바 객체와 JSON을 다루는 쉬운 방법, 몇 가지 예제

by 왕 달팽이 2019. 5. 17.
반응형

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 라이브러리도 있는데 나중에 써볼 기회가 되면 각각의 장점을 정리해봐도 좋을 것 같다.

반응형

댓글