[JAVA] ObjectMapper를 통한 손쉬운 객체 형식 변환

 

 

 

서울시 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를 사용해보자!

 

 

 

 

 

 

 

reference: https://medium.com/@jinnyjinnyjinjin/java-%EA%B0%9D%EC%B2%B4%EB%A5%BC-map-%ED%98%95%EC%8B%9D%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0-53bfafae386f

728x90