1. Jackson이란?
- 목적
- Java 객체를 JSON(또는 다른 포맷)으로 직렬화하거나, JSON을 Java 객체로 역직렬화하기 위한 오픈소스 라이브러리.
- 특징
- 빠른 성능(스트리밍 API 기반)
- 풍부한 애노테이션과 플러그인 구조
- XML·YAML·CSV·CBOR·Smile 등 다양한 포맷 모듈 제공
2. 핵심 모듈 구조
모듈 | Maven | 역할 |
jackson-core | com.fasterxml.jackson.core:jackson-core | 저수준 파서/제너레이터(API) |
jackson-databind | com.fasterxml.jackson.core:jackson-databind | ObjectMapper 등 고수준 바인딩 기능 |
jackson-annotations | com.fasterxml.jackson.core:jackson-annotations | 직렬화 제어용 애노테이션 모음 |
3. ObjectMapper 기본 사용 예시
ObjectMapper mapper = new ObjectMapper();
// (1) 객체 → JSON 문자열
String json = mapper.writeValueAsString(user);
// (2) JSON → 객체
User user = mapper.readValue(jsonStr, User.class);
4. Jackson이 JSON을 다루는 방식 3종
- Streaming API (저수준, 토큰 기반)
- JsonParser(읽기) / JsonGenerator(쓰기)로 JSON을 토큰 단위로 흘려보내며 처리.
- 메모리 아껴야 할 때, 빠른 성능이 최우선일 때 사용하기 좋음.
- Tree Model (중간 수준, 문서=트리)
- JsonNode(예: ObjectNode, ArrayNode)로 DOM처럼 메모리에 올려 탐색/수정.
- 유연하지만 대용량엔 메모리 부담
- Data Binding (고수준, POJO 매핑)
- ObjectMapper로 POJO ↔ JSON 자동 매핑.
- 스키마 변화에 민감, JPA 프록시/순환참조 등 주의 필요.
- 가장 많이 쓰이는 방식
'Today I Learned > Java' 카테고리의 다른 글
[Java] var (1) | 2025.08.10 |
---|---|
[Java] Java Remote Debugging 자바 원격 디버깅 #2 (JDWP 디버깅 옵션) (2) | 2025.07.24 |
[Java] Java Remote Debugging 자바 원격 디버깅 #1 (개념) (0) | 2025.07.17 |
[Java] Random 4 종류 (0) | 2025.07.05 |
[Java] META-INF 디렉토리와 MANIFEST.MF (0) | 2025.03.12 |