ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.