본문 바로가기
Language/JAVA

[JAVA] 자바_Gson을 활용한 JSONObject 매핑 및 변환

by 썸머워즈 2020. 1. 2.
반응형

- GSON을 활용한 JSONObject 매핑 및 변환 -


JSONObject를 다루기위해 자주 사용되는 GSON에 대해 알아보자.

 

일단 Gson을 사용하기위해 라이브러리를 추가해주자.

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.4</version>
</dependency>

 

이제 사용준비가 되었으면 하나하나 사용방법에 대해 알아보자.


JSONObject를 VO(DTO)에 매핑하기

- JsonObject는 Map 객체와 마찬가지로 {key : value}의 형식을 가지고있는데, gson은 해당 key/value를 vo/dto에 선언한 변수와 자동 매핑해 주는것을 지원해준다.

 

Gson gson = new Gson();
CommonVO vo = gson.fromJson(jsonObject.toString(), CommonVO.class);

 

gson.fromJson(JSONObject변수.toString(), vo.class);

이런식으로 사용되며 key가 일치하는 것만 매핑되어 값이 삽입된다.

 

VO(DTO)를 JSONObject로 변환하기

- 1번의 반대의 경우이다. VO의 모든 변수를 key/value 형식으로 JSONObject로 변환을 시켜준다.

 

Gson gson = new Gson();
CommonVO comVO = new CommonVO();

...

String json = gson.toJson(comVO);

 

상황에 따라서 JsonElement로 반환하여 사용할것인지,

String으로 반환되는 값을 사용할건지는 잘 판단하여 사용하면 된다.

 

JSONObject를 Map객체로 변환하기

Gson gson = new Gson();
Map map = new HashMap();

...

map = (Map) gson.fromJson(jsonObject.toString(), map.getClass());

 

JSONObject는 Map객체와 형식이 동일하기 때문에 캐스팅을 통해 쉽게 변환이 가능하다.

 

위 예제는 1번예제와 마찬가지로 fromJson을 사용하되 VO 대신 map을 넣은 형태이다.

2번 예제에서 String 형식의 jsonObject를 만들었다면 첫번째 매개변수에 toString을 해줄필요없이 그냥 사용해도 된다.

 

map = (Map) gson.fromJson(jsonObject, map.getClass());
반응형


댓글

TOP