1. 참조

    1. 참조 블로그: https://velog.io/@hth9876/JsonIgnorePropertiesignoreUnknown-true
  2. Json 직렬화/역직렬화에 관여하는 어노테이션

    1. @JsonIgnore → 필드 수준에서 사용
    2. @JsonIgnoreProperties → 클래스 수준에서 사용
    3. @JsonIgnoreType → 클래스 수준에서 사용되며 전체 클래스를 무시
  3. @JsonIgnore

    @Data
    @Builder
    public class User {
    
        private String name;
    
        @JsonIgnore
        private String mobile;
    
    }
    
    1. 직렬화/역직렬화에 사용되는 프로퍼티 값을 무시할 때 사용

    2. 예제에서 사용된 것처럼 getter/setter 메서드에서도 사용 가능

    3. 예제 코드의 직렬화 과정에서는 mobile 필드가 Json에 담기지 않음

      Untitled

    4. 예제 코드는 역직렬화 과정에서 Unrecognized field "mobile" 같은 에러를 던짐(다른 에러 발생 → setter를 찾지 못함)

      @JsonIgnore 사용한 프로퍼티 인식 못하는 오류

      @JsonIgnore 사용한 프로퍼티 인식 못하는 오류

    5. @JsonProperty

      1. 프로퍼티명이 다른 경우 애트리뷰트로 지정한 이름으로 받을 수 있도록 할 수 있음(즉, 프로퍼티명과 다른 json 데이터를 받을 수 있음)
      2. @JsonIgnore와 함께 사용하면 직렬화/역직렬화 과정에서 필드를 무시하면서 에러는 피할 수 있음
      3. @JsonIgnore는 애트리뷰트로 boolean을 받는데 이를 통해 활성화, 비활성화 가능
  4. @JsonIgnoreProperties

    @Data
    @Builder
    @JsonIgnoreProperties({"mobile"})
    public class User {
    	private String name;
    
    	private String mobile;
    }
    
    @Data
    @Builder
    @JsonIgnoreProperties({"tel"})
    public class User {
    	private String name;
    
    	@JsonProperty("tel")
    	private String mobile;
    }
    
    1. 클래스 단위에 사용되는 어노테이션이며 배열타입 애트리뷰트를 받음
    2. 애트리뷰트에 나열된 프로퍼티에 대해 @JsonIgnore 과 같은 효과
    3. 애트리뷰트로 ignoreUnknown 설정 가능 → 작성한 프로퍼티 이외는 모두 무시함
  5. @JsonIgnoreType

    1. 클래스 레벨에서 사용할 수 있는 어노테이션
    2. 클래스내 존재하는 모든 프로퍼티에 대해 직렬화/역직렬화 무시
    3. 즉, 클래스 자체를 Json 데이터와 매핑이 불가능
    4. 라는 설명이 있지만 나는 왜 안됨

@JsonNaming