Language/Java
[JAVA] ObjectMapper를 통한 손쉬운 객체 형식 변환
PgmJUN
2022. 9. 17. 19:49
서울시 IoT 해커톤 수상작인 B-Map을 리팩터링 하던 도중 비효율적인 코드를 수정하는 과정에서
일반 Dto객체를 Map형식으로 변환해야할 일이 생겼고
바로 이 때!
ObjectMapper를 사용했다.
ObjectMapper의 convertValue() 메서드를 사용하면 객체를 다른 형식의 객체로 변환할 수 있다.
기억해두면 유용할 것 같아 기록을 남겨본다.
toMap() 사용
위와 같이 일반 Dto객체를 Map 객체로 변환하기 위해 ObjectMapper를 사용하였다.
AmenityRequestDto - toMap()
public Map<String,Boolean> toMap(){
ObjectMapper objectMapper = new ObjectMapper();
HashMap result = objectMapper.convertValue(this, HashMap.class);
result.remove("longitude");
result.remove("latitude");
return result;
}
toMap 메서드는 이러하다.
ObjectMapper 객체를 생성한 뒤 converValue() 메서드를 사용하여
this(AmenityRequestDto.class)를 HashMap.class 형태로 변환한 것이다.
그리고 필요하지 않은 Key는 Map의 메서드인 remove()로 제거하였다.
ObjectMapper가 아니었다면..
public Map<String,Boolean> toMap(){
Map<String, Boolean> map = new HashMap<>();
map.put("string", true);
map.put("string", true);
map.put("string", true);
map.put("string", true);
...
return map;
ObjectMapper가 아니었다면 위처럼 같은 메서드를 반복하는 비효율적인 코드를 통해 구현하였을 것이다.
꼭 Map이 아니더라도 List 등 다른 객체로 변환이 필요할 때 ObjectMapper를 사용해보자!