Http Response의 JSON에 포함될 객체 Field 설정 - @JsonProperty , @JsonIgnore , @JsonInclude

TopOfTheHead·2025년 11월 11일

Spring Boot

목록 보기
21/26

Jackson 어노테이션 : com.fasterxml.jackson.annotation
@ResponseBody를 통해 Controller에서 반환되는 DTO 객체JSON Format으로 직렬화JSON에 포함될 객체 Field에 대해 정의
@JsonProperty , @JsonIgnore , @JsonInclude , ...

@JsonProperty("JSON키이름") :
POJO의 특정 Field에 선언하여 직렬화JSONmappingkey의 이름을 지정하는 어노테이션

POJOfield@JsonProperty("JSON키이름")을 선언 시 직렬화를 수행할 때 해당 field에 해당하는 JSONkey명을 임의로 설정

@JsonIgnore
POJOJSON직렬화 시 특정 field를 제외하는 용도로 객체특정 field에 선언하는 어노테이션
▶ 특정 객체Response하는 경우 JSON Data에서 해당 어노테이션을 선언한 객체 FieldResponse에서 제외.

@JsonInclude
객체JSON으로 직렬화 시 어떤 field를 포함할 지 설정하는 용도의 어노테이션

메서드레벨 / 클래스레벨에서 선언 가능
클래스레벨인 경우 해당 클래스 내 모든 Field에 대해 일괄적으로 적용

  • @JsonInclude(JsonInclude.Include.NON_NULL)
    객체에서 선언된 field의 값이 null인 경우 해당 field는 제외

Controller에서 다음처럼 선언된 객체를 반환하는 경우

@Getter
@AllArgsConstructor
public class ApiResult<T> {
	@JsonProperty("statuscode")
	private String code;
	@JsonIgnore
	private String message;	
    @JsonInclude(JsonInclude.Include.NON_NULL)
	private T data;
	public static ApiResult<Void> ok(){
		return ApiResult.of("ok","성공",null);
	}
	public static <T> ApiResult<T> ok(T data){
		return ApiResult.of("ok","성공",data);
	}
	public static <T> ApiResult<T> of(String code, String message, T data){
		return new ApiResult<>(code,message,data);
	}
}


@JsonProperty("statuscode") 가 선언된 fieldJSON에서 statuscode라는 key로 출력

@JsonIgnore가 선언된 fieldJSON에서 제외

@JsonInclude(JsonInclude.Include.NON_NULL)가 선언된 field는 해당 데이터null이 아니므로 JSON에 포함

profile
공부기록 블로그

0개의 댓글