Jackson 라이브러리

2039 단어 jacksonJavaJava

@JsonAutoDetect

해당 어노테이션을 사용하면 필드의 직렬화 대상을 설정할 수 있습니다.

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class Account
{
	@JsonProperty("나의자산")
	private String myAsset;

	@JsonIgnore
    private List<Category> categoryList;

}

현재 myAsset은 private입니다. 따라서 접근 할 수 없습니다. 하지만 fieldVisibility값을 Any로 준다면 private 속성까지 가시화 할 수 있습니다.
@JsonAutoDetect의 가시성 값은 ANY, NON_PRIVATE, PROTECTED_AND_PUBLIC과 같은 속성이 있으니 상황에 맞게 골라 쓰시면 됩니다.

@JsonProperty

해당 어노테이션은 json 직렬화시 해당 어노테이션에 설정한 값으로 json 직렬화 시켜줍니다. 위 코드의 경우 {"나의자산" : "77777777777"}과 같은 결과가 나오게 됩니다.

@JsonIgnore

위 코드를 직렬화 했을시 왜 categoryList는 직렬화에서 제외 되는지 궁금하실 수 있습니다. 그 이유는 @JsonIgnore 어노테이션의 기능때문입니다. 해당 어노테이션을 쓰면 해당 필드 값은 직렬화에서 제외시킨다는 뜻입니다. JPA를 수행하다보면 양방향 관계가 있을때 해당 어노테이션을 사용하지 않으면 StackOverFlow가 발생하게 되는 경우가 있습니다. 이럴때 @JsonIgnore를 사용하게 되면 문제를 해결 할 수 있으므로 알아두시는게 좋습니다.

좋은 웹페이지 즐겨찾기