서울시 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를 사용해보자!
728x90
'Language > Java' 카테고리의 다른 글
[Java] @NotBlank, @NotNull, @NotEmpty 차이 (1) | 2023.06.12 |
---|---|
[Java] - Comparable 인터페이스란? (1) | 2023.01.21 |
[Java] 여러 데이터를 저장하는 법 - Array, List, Map (3) | 2022.08.15 |
[객체지향] SOLID 원칙이란? (4) | 2022.03.28 |
[JAVA] 자바 JVM, JRE, JDK 차이 (2) | 2022.01.20 |