본문 바로가기
Springboot

Jackson 라이브러리

by hyerann 2019. 10. 22.

Jackson 라이브러리

  • 객체를 JSON 형식으로 변환해준다.
  • 프로퍼티 즉, Getter, Setter를 기준으로 작동한다.
    • Java의 프로퍼티는 보통 Getter와 Setter의 이름 명명 규칙으로 정해진다.
  • Jackson의 매핑을 프로퍼티가 아닌 멤버변수로 하고 싶다면 @JsonProperty를 사용한다.
public class Person {
	@JsonProperty("name")
	private String myName = "Mommoo";
}

// {"name": "Mommoo"}
  • @JsonAutoDetect로 매핑 법칙을 바꿀 수 있다.
// 멤버 변수 뿐만 아니라, 기본 정책인 Getter 역시 데이터 매핑이 진행된다.
@JsonAutoDetect(fiedlVisibility = JsonAutoDetect.Visibility.ANY)
public class Person {
	private String myName = "Mommoo";

	public String getJob() {
		return "Developer";
	}
}
  • Getter를 제외하고 싶다면 @JsonIgnore을 쓰면 된다.
@JsonAutoDetect(fiedlVisibility = JsonAutoDetect.Visibility.ANY)
public class Person {
	private String myName = "Mommoo";

	@JsonIgnore
	public String getJob() {
		return "Developer";
	}
}
  • Getter 정책으로 private만 데이터 바인딩에 제외할 수 있다.
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NON_PRIVATE)
public class Person {
	private String myName = "Mommoo";

	public String getJob() {
		return "Developer";
	}
}
  • 특정 데이터 상태인 경우를 제외하고 싶다면 @JsonInclude 사용
// 클래스 전반적으로 제외하고 싶다면, 클래스 위에 선언
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
	private String myName = "Mommoo";

	public String getJob() {
		return "Developer";
	}
}

// 특정 프로퍼티만 제외하고 싶다면, 해당 프로퍼티 위에 선언
public class Person {
	private String myName = "Mommoo";

	@JsonInclude(JsonInclude.Include.NON_NULL)
	public String getJob() {
		return "Developer";
	}
}

댓글