Search
Duplicate

[Java]@JsonIgnoreProperties(ignoreUnknown=true)

순서
6
날짜
2023/03/19
사람
상태
Done
API 연동된 객체안에 JsonIgnoreProperties 발견
오늘은 API 를 연동하면서 처음보는 언노테이션을 보고 알게되어 작성하려고한다.
JsonIgnoreProperties라는 언노테이션이며, 해당하는 언노테이션의 역할은 RestApi를 통해 들어온 Json 데이터의 body를 역직렬화를 통해서 객체를 만들때 없는 데이터가 있을시 발생되는 에러를 무시하게 해주는 역할을 해준다.
어떻게 사용하면 되는지 작성해보자.
사용방법
아래와 같은 클래스가 있다고 가정해보자.
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties({"password"}) public class User { private String username; private String password; private String email; // getters and setters }
Java
복사
위 예제에서는 password 프로퍼티가 JSON으로 변환되지 않거나, JSON에서 역직렬화할 때 해당 프로퍼티가 무시된다.
예를 들어, 아래와 같이 User 객체를 JSON으로 직렬화할 경우
User user = new User(); user.setUsername("john"); user.setPassword("secret"); user.setEmail("john@example.com"); ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString(user); System.out.println(jsonString);
Java
복사
아래와 같은 Json 데이터가 생성 된다.
{ "username": "john", "email": "john@example.com" }
JSON
복사
따라서, @JsonIgnorePropertiesJSON 직렬화 및 역직렬화에서 특정 프로퍼티를 제외하고 싶을 때 사용할 수 있는 유용한 어노테이션이다.
JsonIgnoreProperties(ignoreUnknown = true) 사용방법
@JsonIgnoreProperties(ignoreUnknown = true) 는 Spring에서 JSON 직렬화 및 역직렬화 시, 알 수 없는 프로퍼티를 무시하도록 지정하는 어노테이션이다. JSON 문자열에 포함된 프로퍼티 이름이 클래스에 정의된 프로퍼티와 일치하지 않을 때 사용한다.
예를 들어, 아래와 같이 User 클래스에서 usernameemail 프로퍼티를 가지고 있있다고 가정해보자.
public class User { private String username; private String email; // getters and setters }
Java
복사
하지만 클라이언트 측에서 pawssword를 추가해서 전송한다고 가정해보자.
{ "username": "john", "email": "john@example.com", "password": "secret" }
JSON
복사
원래 대로라면 password를 작성하지 않았기 때문에 에러가 발생하겠지만, JsonIgnoreProperties(ignoreUnknown = true) 을통해서 이를 무시하고, 클래스에 선언되어 있는 데이터만 가져올 수 있게 된다.
후기
오늘은 JsonIgnoreProperties에 대해 찾게 되었다. API라면 클라이언트, 서버측 항상 언제 어떻게 바뀔지 모르기 때문에 위와같은 언노테이션을 써도 좋겟지만, 다르게 생각해보면 변경됨에 따라 최신화 시켜주는 것도 중요한 부분이기 때문에 협의하에 잘 작성하는게 좋지 않을까 생각하였다.