Java객체와 JSON간의 직렬화 및 역직렬화를 간단하고 효율적으로 처리할 수 있는 라이브러리
주로 Spring Boot와 같은 프레임워크에서 JSON데이터를 처리하는데 기본적으로 사용된다
Jackson 어노테이션과 주요 속성
1. @JsonProperty
- JSON 속성과 Java 필드 간의 매핑을 설정.
- 주요 속성:
- value: JSON 속성 이름을 설정.
- required: 필드가 JSON 데이터에 필수인지 여부를 설정.
- access: 직렬화/역직렬화 접근 수준(READ_ONLY, WRITE_ONLY, READ_WRITE).
2. @JsonIgnore
- 특정 필드를 JSON 직렬화 및 역직렬화에서 제외.
- 이 필드는 JSON에 포함되지 않음.
3. @JsonIgnoreProperties
- 여러 필드를 한 번에 무시.
- 주요 속성:
- value: 무시할 속성 이름 배열.
- allowGetters: getter만 허용하고 나머지는 무시할지 설정.
- allowSetters: setter만 허용하고 나머지는 무시할지 설정.
4. @JsonIgnoreType
- 특정 클래스 전체를 무시.
- 해당 클래스 타입의 객체는 직렬화 및 역직렬화에서 제외됨.
4. @JsonInclude
- 특정 조건에 따라 필드를 JSON에 포함할지 설정.
- 주요 속성:
- value: 조건 설정(ALWAYS, NON_NULL, NON_EMPTY, NON_DEFAULT 등)
6. @JsonSetter
- JSON 속성 값을 객체의 필드에 매핑할 setter를 명시적으로 지정.
- 주요 속성:
- value: JSON 속성 이름.
7. @JsonGetter
- 필드를 JSON에 직렬화할 때 사용할 getter를 명시적으로 지정.
- 주요 속성:
- value: JSON 속성 이름.
8. @JsonAnySetter
- JSON에서 정의되지 않은 속성을 동적으로 처리.
- JSON의 추가 속성을 Map으로 처리할 때 사용.
9. @JsonAnyGetter
- Map 타입의 데이터를 JSON으로 변환할 때 사용.
10. @JsonValue
- JSON 직렬화에서 객체의 특정 값을 사용하도록 설정.
11. @JsonRawValue
- 필드 값을 JSON 문자열로 그대로 처리.
- JSON으로 변환 시 문자열 값을 이스케이프하지 않고 그대로 포함.
12. @JsonUnwrapped
- 객체의 필드 값을 JSON의 루트 수준 속성으로 직렬화/역직렬화.
- JSON 구조를 평평하게(flatten) 만듦.
13. @JsonManagedReference
- 직렬화 중 순환 참조 문제를 해결.
- 주로 부모 엔티티에 사용.
14. @JsonBackReference
- 순환 참조 문제 해결.
- 자식 엔티티에 사용하며 @JsonManagedReference와 쌍으로 동작.
15. @JsonIdentityInfo
- 엔티티의 고유 식별자를 사용하여 순환 참조 문제 해결.
- 주요 속성:
- generator: ID를 생성할 방식(ObjectIdGenerators).
- property: JSON에서 사용할 식별자 속성 이름.
16. @JsonTypeInfo
- 다형성(polymorphic) 타입 정보를 포함.
- 주요 속성:
- use: 타입 정보 삽입 방식.
- include: 타입 정보를 JSON 어디에 포함할지 설정.
- property: 타입 정보를 나타낼 JSON 속성 이름.
- visible: JSON에서 타입 속성을 유지할지 여부.
17. @JsonCreator
- JSON 데이터로부터 객체를 생성하는 생성자를 명시적으로 지정.
- 주로 불변 객체(Immutable Object) 생성에 사용.
18. @JsonFormat
- 날짜, 시간, 숫자 등의 형식을 JSON으로 변환할 때 사용.
- 주요 속성:
- pattern: 형식 지정(예: yyyy-MM-dd).
- timezone: 시간대 설정.
- shape: 형식 모양(STRING, NUMBER 등).
19. @JsonRootName
- JSON 루트 이름을 설정.
- 루트 이름을 JSON 데이터의 최상위 요소로 추가.
20. @JsonDeserialize
- 커스텀 디시리얼라이저(Deserializer)를 설정.
- 주요 속성:
- using: 사용자 정의 디시리얼라이저 클래스 지정.
21. @JsonSerialize
- 커스텀 시리얼라이저(Serializer)를 설정.
- 주요 속성:
- using: 사용자 정의 시리얼라이저 클래스 지정.
22. @JsonFilter
- JSON 출력 시 조건부 필터링을 적용.
- 필터를 등록하고, 원하는 필드만 선택적으로 포함하거나 제외.
23. @JsonSubTypes
- 다형성 타입의 하위 클래스 정보를 설정.
- 주요 속성:
- value: 하위 클래스 정보를 배열 형태로 지정.
24. @JacksonInject
- Jackson이 객체를 생성할 때 의존성을 주입하도록 설정.
25. @JsonView
- JSON 직렬화 시 특정 뷰를 정의하여 다른 형태로 데이터를 출력.
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] Servlet (2) | 2025.01.10 |
---|---|
[Java] HttpServletRequest (0) | 2025.01.08 |
[JPA] N + 1 문제 (0) | 2025.01.06 |
[Java] Generic 제너릭 (0) | 2025.01.04 |
[Java] enum (0) | 2025.01.01 |