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 |