코딩항해기
[기타] Gson 어노테이션, Jackson 어노테이션 비교 (JSON) 본문

Gson에서 Jackson으로 JSON 문자열 변경 라이브러리를 바꾸게 되었다.
그때 사용한 비교 정보를 기록용으로 남겨둔다.
| Gson | Jackson | 기능 요약 | 상세 설명 |
| @SerializedName | @JsonProperty | 필드명을 JSON에서 다른 이름으로 매핑 | JSON과 자바 필드명이 다를 때 매핑. Jackson에서는 속성명뿐 아니라 직렬화/역직렬화 접근성(access = READ_ONLY, WRITE_ONLY)도 지정 가능. |
| @Expose | @JsonProperty(access=...) @JsonIgnore |
해당 필드를 직렬화/역직렬화 할지 제어 | Gson은 기본적으로 모든 필드 직렬화/역직렬화하지만, GsonBuilder().excludeFieldsWithoutExposeAnnotation()을 설정하면 @Expose붙은 필드만 포함. @Expose(deserialize=false, serialize=true)처럼 세분화 지정 가능. Jackson은 @JsonProperty(access=...)로 읽기/쓰기 별도 제어. @JsonIgnore는 필드를 직렬화/역직렬화에서 완전히 제외. |
| @Since | @JsonView @JsonProperty(access=...) |
특정 버전(이상)에서만 필드 포함 | Gson은 @Since로 특정 버전 이상일 때만 필드 포함 가능. Jackson은 완전히 같은 기능은 없지만 @JsonView로 특정 뷰, 또는 @JsonProperty(access=...)로 직렬화/역직렬화 제어 가능. |
| @Until | - | 특정 버전(이하)에서만 필드 포함 | Gson만 지원. 지정한 버전 이하에서만 필드 포함. Jackson엔 직접 매칭 개념 없음. |
| - | @JsonInclude | 조건(Null 등) 따라 JSON 포함 여부 선택 | Jackson만 지원. 필드 값이 null · default 등 조건에 따라 JSON 내 포함 여부를 결정함. |
| - | @JsonIgnoreProperties | 여러 필드 한 번에 제외 | Jackson만 지원. 클래스나 필드 단위에서 여러 속성 이름을 한꺼번에 제외할 때 사용. |
| - | @JsonAlias | JSON의 여러 키를 하나의 필드로 허용 | Jackson만 지원. 여러 JSON key를 하나의 필드에 매핑할 때 유용. |
'기타' 카테고리의 다른 글
| [기타](URL) Http 상태 코드 정리 (0) | 2026.01.16 |
|---|---|
| [기타] 새해 복 많이 받으세요! (0) | 2025.01.29 |
| [기타] roadmap.sh로 방향성 잡기 (0) | 2024.12.26 |
| [기타] 크리스마스 (2) | 2024.12.25 |
| [기타] Commit Calendar (0) | 2024.12.11 |