WIPIVERSE

Gson

Gson은 구글(Google)이 개발한 자바(Java) 기반의 오픈소스 라이브러리로, 자바 객체(Java Object)를 JSON(JavaScript Object Notation) 형식으로 직렬화(serialization)하거나, 반대로 JSON 문자열을 자바 객체로 역직렬화(deserialization)하는 기능을 제공한다. 공식 프로젝트는 GitHub의 google/gson 저장소에서 관리되며, 아파치 2.0 라이선스(Apache License 2.0)로 배포된다.

배경 및 개발 목적

Gson은 2008년 구글에 의해 처음 개발되었다. 기존의 자바-JSON 변환 라이브러리들은 대부분 자바 클래스에 애너테이션(annotation)을 직접 추가해야 했기 때문에, 소스 코드에 접근할 수 없는 기존 객체(pre-existing unmodifiable objects)를 처리하기 어려웠다. Gson은 이러한 제약 없이 임의의 자바 객체를 JSON으로 변환할 수 있도록 설계되었으며, 자바 제네릭(Java Generics)에 대한 광범위한 지원을 주요 설계 목표로 삼았다.

주요 기능

  • toJson() 메서드를 통한 자바 객체 → JSON 문자열 변환
  • fromJson() 메서드를 통한 JSON 문자열 → 자바 객체 변환
  • 소스 코드 수정 없이 기존 객체에 대한 직렬화/역직렬화 지원
  • 복잡한 객체 계층 구조와 제네릭 타입 지원
  • 사용자 정의 객체 표현(custom representations) 허용

기술적 요구 사항

  • Gson 2.12.0 이상: Java 8 이상 필요
  • Gson 2.9.0 ~ 2.11.0: Java 7 이상 필요
  • Gson 2.8.9 이하: Java 6 이상 필요
  • Java 9 이상에서는 JPMS 모듈(모듈명: com.google.gson)을 지원한다.
  • 안드로이드(Android) 최소 API 레벨: Gson 2.11.0 이상은 API 21, 2.10.1 이하는 API 19를 요구한다.

의존성 설정

Gradle:

dependencies {
  implementation 'com.google.code.gson:gson:2.14.0'
}

Maven:

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.14.0</version>
</dependency>

현황 및 한계

Gson은 현재 유지보수(maintenance) 모드에 있다. 기존 버그는 수정되지만 대규모 신규 기능은 추가되지 않을 가능성이 높다. 또한 Gson의 주된 초점은 자바에 있으며, 코틀린(Kotlin)이나 스칼라(Scala) 등 다른 JVM 언어의 고유 기능(예: 코틀린의 널 비허용 타입, 기본 인자 생성자)은 공식적으로 지원되지 않는다. 안드로이드 환경에서는 리플렉션(reflection) 기반 동작이 코드 축소/난독화 최적화와 충돌할 수 있으므로, 구글은 안드로이드에서 Gson 대신 코틀린 직렬화(Kotlin Serialization) 사용을 권장하고 있다.

영향 및 사용

Gson은 자바 생태계에서 가장 널리 사용된 JSON 처리 라이브러리 중 하나로, 수많은 자바 프로젝트와 프레임워크에서 채택되었다. GitHub에서 24,000개 이상의 스타를 보유하고 있으며, Maven Central을 통해 배포된다. 다만 최근에는 잭슨(Jackson)이나 코틀린 직렬화 등 대체 라이브러리들의 사용도 증가하고 있는 추세이다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기