Spring
[SpringMVC] 업무에서 활용한 @JsonInclude 사용법 정리
U_ma
2023. 3. 31. 16:57
설명
- 사용 예시
옵션
- 옵션의 종류
1. 옵션 적용 예시 설명
2. 변경된 결과 설명
설명
💡 자바 객체 → JSON 형식으로 직렬화 때 포함할 속성을 지정할 때 사용. 예를 들어 null 값을 자바 객체를 직렬화할 때 JSON문자열에 해당 null 값이 포함된다. @JsonInclude를 사용해 JSON에서 포함돼야 하는 속성과 제외할 속성이 지정 가능.
사용 예시
// 널 값의 속성은 포함하지 않음
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TestClass {
...
}
옵션
@JsonInclude는 옵션을 가진다. 대표적으로 다섯 가지가 있으며 아래와 같다.
옵션의 종류
이름 | 설명 |
---|---|
옵션명 | 옵션이 하는 일 |
JsonInclude.Include.ALWAYS | 값에 상관없이 출력 |
NON_NULL | NULL 값이 아닌 경우에만 직렬화된 출력 |
NON_EMPTY | NULL 값이 아니고 빈 컬렉션, 맵이 아닌 경우 출력 |
NON_DEFAULT | 속성의 값이 해당 데이터 형식의 기본값과 다른 경우 출력 |
CUSTOM | 속성이 직렬화된 출력에 포함돼야 하는지를 결정 가능 |
옵션 적용 예시 설명
@JsonInclude(JsonInclude.Include.NON_NULL) // 널 값이 아닌 경우에만 반환
public class Person {
private String name;
private Integer age;
@JsonInclude(JsonInclude.Include.NON_NULL) // 널 값이 아닌 경우에만 반환 hobbies에 지정
private List<String> hobbies;
...
}
해당 클래스는 Null 값이 아닌 값만 반환하게 돼 있고, 컬렉션인 hobbies
또한 Null값인 경우 반환하지 않는 @JsonInclude(content = Include.NON_NULL)
이 적용됐다.
Person person = new Person();
person.setName("John");
person.setAge(null);
person.setHobbies(Arrays.asList("reading", null, "swimming"));
변경된 결과 설명
{
"name": "John",
"age" : null,
"hobbies": ["reading", null, "swimming"]
}
{
"name": "John",
"hobbies": ["reading", "swimming"]
}
JSON의 결괏값을 확인해 보면 Null 값이던 age 속성과 hobbies 내의 null 값의 경우 반환이 되지 않는 것을 확인.
수정 로그
23 - 04 - 04: 옵션 아래의 설명글 오탈자 수정