Spring Boot

ObjectMapper

stophyeon 2024. 1. 27. 15:19
728x90

ObjectMapper가 필요한 이유

Data를 받고 주는 형식은 정말 다양합니다. 
Json으로 받고 Java의 객체로 줄 때도 있고 반대인 경우도 있습니다.
이 때 Json형식의 Data를 Java의 객체로 매핑시키거나 Java객체의 Data를 Json으로 매핑시켜야합니다.
일반적으로 가장 많이 사용하는 매핑 방식은 Controller layer에서 @RequestBody를 사용해서 Json Data를 
Java의 객체 형태로 매핑시키는 것입니다. 
이 외에도 매핑 방식으로는 JsonArray & JsonObject를 사용해서 Json Data의 Key, Value값을 객체에 직접
매핑시키는 방식도 있습니다
이 글에서 소개해드릴 방법은 Jackson 라이브러리에 있는 ObjectMapper를 사용하는 방법입니다
ObjectMapper를 사용한다면 JsonObject를 사용했을 때처럼 객체의 필드값에 Value를 직접 주입하는 방식
이 아닌 필드명과 Key의 이름을 비교해서 자동으로 매핑을 해주기 때문에 ObjectMapper를 사용하는 것이
중복된 코드를 줄일 수 있습니다.

 

ObjectMapper 사용

ObjectMapper를 사용하기 위해서는 Jackson 의존성을 추가해서 사용합니다.
ObjectMapper 인스턴스를 생성하면 이제 ObjectMapper를 사용할 수 있게된 것입니다.
Json 에서 Java 객체로 매핑하는 것을 역직렬화라고 하고, Java객체를 Json형식의 Data로 매핑하는 것을 직렬화라고 합니다. ObjectMapper에서 제공하는 아래의 메서드를 통해서 매핑기능을 사용할 수 있습니다

 

.readValue(Json Data, 매핑할 객체.class) 역직렬화 기능을 하는 메서드로 Json Data를 객체로 매핑해서
객체를 반환
.writeVaueAsString(매핑할 객체.class) 직렬화 기능을 하는 메서드로 객체를 Json형식으로 매핑해서
Json 형식의 String 반환

 

아래의 코드는 ObjectMapper를 사용해서 Json을 Java객체로 매핑하는 역직렬화하는 메서드입니다

 

아래의 Json 형식의 Data를 객체로 매핑해보겠습니다.

 

 

 

단위 테스트의 결과 객체로 매핑이 잘된 것을 알 수 있습니다.
이 때 매팽 시킬 객체의 필드명은 Json의 Key값과 일치시키거나 @JsonProperty를 통해서 맞춰주어야 매핑이 될 수 있습니다.

'Spring Boot' 카테고리의 다른 글

Transaction  (0) 2024.02.14
Test 코드  (2) 2024.01.27
리액티브 프로그래밍  (0) 2024.01.15
Validation  (0) 2024.01.09
RestController  (0) 2024.01.07