코딩항해기

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

기타

[기타] Gson 어노테이션, Jackson 어노테이션 비교 (JSON)

miniBcake 2025. 8. 15. 10:38

 

 

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