Posts json 응답 시 특정 필드 빼고 보내기
Post
Cancel

json 응답 시 특정 필드 빼고 보내기

스프링에서는 Http 메시지 컨버터를 통해 사용자가 보낸 데이터와 서버에서 내보내는 데이터를 자동으로 변환해준다. 만약 다음과 같은 객체를 응답으로 보낼 경우 Content-Typeapplication/json이라면, 스프링은 다음 객체를 자동으로 Json 형식으로 바꾸어 내보낸다.

1
2
3
4
5
6
7
8
9
10
@AllArgsConstructor
@Getter
public class UserDto {
  private String userId;
  private String password;
}

//
  
UserDto user = new UserDto("userId", "password");
1
2
3
4
{
  "userId":"userid",
  "password":"password"
}

그런데 만약 예시에서 password는 민감한 데이터이므로 응답으로 보내고 싶지 않다면 어떻게 하면 될까? 응답을 보낼 때 password 필드의 값을 null로 비워서 보낼 수도 있겠지만, 개발자가 실수로 비우지 않을 수도 있고 코드도 깔끔하지 않을 것이다.

@JsonIgnore

@JsonIgnore은 Jackson 패키지의 애노테이션으로, Json의 직력화 및 역직렬화에서 속성을 무시하는데 사용한다.

위와 같은 상황에서 사용하는 것이 @JsonIgnore으로, 클래스 필드에 해당 애노테이션을 추가해주면 HTTP 메시지 컨버터에서 Json으로 직렬화할 때, @JsonIgnore가 붙은 필드는 빼고 변환한다.

1
2
3
4
5
6
7
8
9
10
11
@AllArgsConstructor
@Getter
public class UserDto {
  private String userId;
  @JsonIgnore
  private String password;
}

//
  
UserDto user = new UserDto("userId", "password");
1
2
3
{
  "userId":"userid"
}
This post is licensed under CC BY 4.0 by the author.

junit - spy

lombok 사용시 주의점

Comments powered by Disqus.