hoonii2

[SpringBoot] 03. Object Mapper 본문

개념 공부/(개발) 02. Spring Boot

[SpringBoot] 03. Object Mapper

hoonii2 2023. 1. 20. 21:57

1. 개요

 - View <-> Controller 간에 서로 데이터를 주고받을 때 Json 형태로 사용하는 경우가 많다.

 - 응답으로 Json 형태로 직렬화, 요청을 역 직렬화하는데 Object Mapper 인스턴스가 사용된다.

 - Spring Boot 는 기본적으로 Object Mapper 가 자동으로 커스텀되어 사용된다.

 - 자체적인 Object Mapper 커스텀을 사용하려면 jacson 라이브러리를 사용할 수 있다.

 

2. 기본적인 Spring Boot 구성

 - MapperFeature.DEFAULT_VIEW_INCLUSION 비활성화
 - DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 비활성화
 - SerializationFeature.WRITE_DATES_AS_TIMESTAMPS 비활성화

 

2-1. 사용 예제

 

String 및 LocalDateTime 개체를 사용하여 Coffee 객체 선언

public class Coffee {

    private String name;
    private String brand;
    private LocalDateTime date;

   //getters and setters
}

 

간단한 Get 요청 REST 컨트롤러 정의

@GetMapping("/coffee")
public Coffee getCoffee(
        @RequestParam(required = false) String brand,
        @RequestParam(required = false) String name) {
    return new Coffee()
      .setBrand(brand)
      .setDate(FIXED_DATE)
      .setName(name);
}

 

GET http : // lolcahost : 8080 / coffee? brand = Lavazza 를 호출 할 때의 응답

{
  "name": null,
  "brand": "Lavazza",
  "date": "2020-11-16T10:21:35.974"
}

 

위 처럼 동작하는 Object Mapper 응답을
1) Null 제외
2) 사용자 지정 형식 ( dd - mm - yyyy - HH : MM ) 방식으로 사용을 원함

방식으로 아래처럼 커스텀하여 사용할 수 있다.

{
  "brand": "Lavazza",
  "date": "04-11-2020 10:34"
}

이 때, 기본적인 Object Mapper 를 사용자 정의하거나 , 아예 재정의 하는 방법이 있다.

 

 

 

 

참고 자료

https://www.baeldung.com/spring-boot-customize-jackson-objectmapper

 

Comments