참조
Json 직렬화/역직렬화에 관여하는 어노테이션
@JsonIgnore
→ 필드 수준에서 사용@JsonIgnoreProperties
→ 클래스 수준에서 사용@JsonIgnoreType
→ 클래스 수준에서 사용되며 전체 클래스를 무시@JsonIgnore
@Data
@Builder
public class User {
private String name;
@JsonIgnore
private String mobile;
}
직렬화/역직렬화에 사용되는 프로퍼티 값을 무시할 때 사용
예제에서 사용된 것처럼 getter/setter 메서드에서도 사용 가능
예제 코드의 직렬화 과정에서는 mobile 필드가 Json에 담기지 않음
예제 코드는 역직렬화 과정에서 Unrecognized field "mobile"
같은 에러를 던짐(다른 에러 발생 → setter를 찾지 못함)
@JsonIgnore 사용한 프로퍼티 인식 못하는 오류
@JsonProperty
@JsonIgnore
와 함께 사용하면 직렬화/역직렬화 과정에서 필드를 무시하면서 에러는 피할 수 있음@JsonIgnore
는 애트리뷰트로 boolean
을 받는데 이를 통해 활성화, 비활성화 가능@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;
}
@JsonIgnore
과 같은 효과ignoreUnknown
설정 가능 → 작성한 프로퍼티 이외는 모두 무시함@JsonIgnoreType
@JsonNaming
jackson 라이브러리를 활용하여 DTO 프로퍼티들의 표기법을 변경하는 어노테이션
자바에서 변수는 대부분 camel case 형식으로 userName 형태로 사용하므로 snake_case 형식을 지원하지 않는 문제에 사용됨
만약 생성자로 필드가 정의된다면 @JsonCreator
사용해야함
코드 예시
// @JsonNaming 사용전
public class User {
@JsonProperty("user_name")
private String userName;
private String password;
}
//JSonNaming 사용후
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class User {
private String userName;
private String password;
}