-
[Spring boot] @JsonInclude 어노테이션프로젝트/아카이뷰 2024. 1. 4. 15:35
JsonInclude 어노테이션이 왜 궁금했을까 ❓
- Error Handling을 공부하는 과정에서 Validation이 발생한 필드와 메시지를 JSON 형식으로 클라이언트에게 내려주는 부분이 있었다.
- 해당 부분에 @JsonInclude 어노테이션이 작성이 되어있어 알아보았다.@JsonInclude가 작성되어 있었던 코드
@JsonInclude(JsonInclude.Include.NON_EMPTY) private final List<ValidationError> errors; @Getter @Builder @RequiredArgsConstructor public static class ValidationError { private final String field; private final String message; public static ValidationError of(final FieldError fieldError) { return ValidationError.builder() .field(fieldError.getField()) .message(fieldError.getDefaultMessage()) .build(); } }
- Validation 확인 과정에서 발생하는 에러들이 errors에 담기게 되는데 Validatiton이 정상적일 경우 errors에는 값이 들어오지 않아 null 값을 가지게 된다.
- 해당 부분을 JsonInclude.Include.NON_EMPTY를 통해 직렬화 과정에서 null 값이 포함되지 않도록 하였다.
@JsonInclude 어노테이션
Option Operation ALWAYS 모든 데이터를 JSON으로 변환 NON_NULL NULL을 제외한 데이터를 JSON으로 변환 NON_ABSENT NULL / AtomicReference를 제외한 데이터를 JSON으로 변환 NON_EMPTY NULL / ABSENT / Collection / Map / Array / String이 NULL이거나 0인 데이터를 제외하여 JSON으로 변환 NON_DEFAULT EMPTY / Primitive 타입의 default 값 / Date의 Timestamp 값이 0L인 데이터를 제외하여 JSON으로 변환 '프로젝트 > 아카이뷰' 카테고리의 다른 글
[Spring boot] JPA(Java Persistence API) (0) 2024.01.13 [Spring boot] Error Handling (1) 2024.01.10 [Spring boot] Common Response (0) 2024.01.09 [Spring boot] WebRTC (0) 2024.01.08 [Spring boot] @Builder 어노테이션 (0) 2024.01.05