반응형
- 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());
반응형
댓글