Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 반환
- redis
- springboot
- 코딩테스트
- Request
- Boot
- @RequestBody
- actuator
- 프로퍼티
- Docker
- @Value
- RequestBody
- Security
- 헬스체크
- yml
- RequestParam
- 코드워즈
- 로그인
- 디자인 패턴
- property
- Codewars
- JWT
- 플라이웨이트
- 파라미터
- response
- ResponseDto
- Spring
- DTO
- @RequestParam
- enum
Archives
- Today
- Total
있을 유, 참 진
[SpringMVC] 업무에서 활용한 @JsonInclude 사용법 정리 본문
설명
- 사용 예시
옵션
- 옵션의 종류
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: 옵션 아래의 설명글 오탈자 수정
'Spring' 카테고리의 다른 글
[Spring] 토비의 스프링:: Spring Boot Containerless 이해하기 (0) | 2023.04.18 |
---|---|
[Spring] Spring Actuator를 이용한 운영 어플리케이션 관리:: 세팅 및 Health check 테스트 (1) | 2023.04.09 |
[SpringMVC] Yalm, Properties 파일의 프로퍼티 값 사용하기 (1) | 2023.04.04 |
[SpringMVC] 업무에서 활용한 @RequestBody 사용법 정리 (0) | 2023.03.30 |
[SpringMVC] 업무에서 활용한 @RequestParam 사용법 정리 (8) | 2023.03.30 |
Comments