목록Spring/Jackson (6)
초보개발자 긍.응.성
개요 및 예시는 이전글로부터 이어서 진행합니다.https://ckddn9496.tistory.com/176ObjectMapper Enum Control – 1. BeanSerializerModifier (직렬화 커스터마이징)1. 역직렬화 중복 작업 제거BeanDeserializerModifier직렬화 방식을 커스텀하게 변경했던 것처럼 Enum 필드 역직렬화하는 방식도 동일하게 애노테이션을 통해 적용하려 합니다.public @interface EnumDeserialize { /* enum 객체를 deserialize 할때 호출할 메서드 명 */ String value();} 역직렬화할 Enum 타입에 붙여줄 애노테이션을 먼저 생성하였습니다.class Deposit { @EnumDeseria..
Spring 프레임워에서 Jackson 라이브러리를 사용하다 보면 Enum 타입에 대하여 변환 시 특별한 처리를 해주어야 할 때가 있는데, 이유는 기본적으로 ObjectMapper가 Enum 타입을 직렬화 시 타입 값의 이름으로 직렬화되기 때문입니다(내부적으로는 toString()을 통해서이나 모든 Enum의 오버라이드 하지 않은 toString 은 name을 반환합니다). 일반적으로 Enum 타입의 “상수” 값은 개발자가 이해하기 쉬운 문자열로 네이밍되고, 실제로 사용할 때는(클라이언트 응답 구성, 외부 API 서버 응답 파싱 등) 이름과는 다른 코드값으로 사용해야 합니다.이러한 작업을 위해 특정 필드를 원하는 값으로 직렬화하려면 @JsonSerializer 애노테이션과 함께 커스텀 한 JsonSeri..
Jackson에서 사용하는 Annotation에 대해 정리한다. Baeldung (Jackson Annotation Example)에 정리된 글을 참고하였다. 4. Jackson General Annotations 4.1 @JsonProperty @JsonProperty는 필드나 메서드 위에 선언되어 serialize/deserialize 될 때 매핑될 property명을 지정해 준다. API서버에서 가져온 응답이 자바의 명명규칙인 camelCase가 아닐 때 DTO에서 이를 매핑해주기위하여 사용한다. 메서드 위에 선언될 경우 @JsonSetter와 @JsonGetter의 역할을 한다. public class MyBean { public int id; private String name; @JsonPro..
Jackson에서 사용하는 Annotation에 대해 정리한다. Baeldung (Jackson Annotation Example)에 정리된 글을 참고하였다. 3. Jackson Property Inclusion Annotations 3.1 @JsonIgnoreProperties 클래스 레벨 애노테이션으로, Jackson이 무시할 property 리스트를 지정할 수 있다. ignoreUnkown=true 속성은 JSON 입력 값에 대하여 Mapping 시 클래스에 선언되지 않은 property를 무시한다. UnrecognizedPropertyException 예외 발생을 막을 수 있다 @JsonIgnoreProperties({ "id" }) public class BeanWithIgnore { publi..
Jackson에서 사용하는 Annotation에 대해 정리한다. Baeldung (Jackson Annotation Example)에 정리된 글을 참고하였다. 2. Jackson Deserialization Annotations 2.1 @JsonCreator @JsonCreator는 Json객체를 deserialize 하여 객체 mapping 시 사용할 생성자를 지정할 수 있도록 도와준다. 이때 주의할 점은 @JsonCreator는 반드시 @JsonProperty와 함께 사용되어야 한다. @JsonProperty는 @JsonCreator의 파라미터 필드에 정의되어 Mapping을 위한 property값을 정의한다. 파라미터의 이름이 property 명과 일치한다면 @JsonProperty 애너테이션을 사..
Jackson에서 사용하는 Annotation에 대해 정리한다. Baeldung (Jackson Annotation Example)에 정리된 글을 참고하였다. 1. Jackson Serialization Annotations 1.1 @JsonAnyGetter Map 필드에 대해서 일반 properties로 처리한다 public class ExtendableBean { private String name; private Map properties; @JsonAnyGetter public Map getProperties() { return properties; } } /** @JsonAnyGetter 적용 전 */ { "name" : "My bean", "properties" : { "attr2" : "va..