Java Jackson을 쓰며 겪었던 문제

juunini·2021년 1월 22일
0

시행착오

목록 보기
2/7
post-thumbnail

일반적인 상황

  • 클래스의 멤버변수가 public 이면 ObjectMapper를 이용할 때 애로사항이 없다.
  • 멤버변수를 private 으로 선언해도 getter와 setter를 두면 문제가 해결된다.

내가 겪은 상황

  • 멤버변수를 private 으로 설정했다.
  • constructor에 변수 값을 전부 입력받아 할당하도록 했다.
    (그래서 setter가 없다.)
  • getter를 쓰지 않고 변수명과 같은 메소드를 사용하면 변수값을 얻을 수 있도록 했다.

이 상황에서는 Jackson을 이용해서 string to object 도, object to string 도 불가능하다.

해결 방법

string to object

setter가 없기 때문에 발생하는 문제라 이 부분을 해결해줘야 한다.
Jackson annotation의 @JsonCreator@JsonProperty 을 사용하면 해결할 수 있다.

constructor 위에 @JsonCreator annotation을 사용하고,
입력받는 변수 앞에 @JsonProperty annotation을 사용하면
setter가 없어서 생기는 문제가 해결되어서
string to object 가 가능해진다.

object to string

getter가 없기 때문에 발생하는 문제라 이 부분을 해결해줘야 한다.
Jackson annotation의 @JsonGetter 을 사용하여 해결할 수 있다.

getter 대신 멤버변수의 값을 받을 수 있는 메소드 위에 @JsonGetter annotation을 사용하면
이 메소드가 getter의 역할을 한다는 것을 명시하기 때문에
object to string 이 가능해진다.

해결 된 코드

profile
Full StackOverFlow

0개의 댓글