안드로이드 JSON 파싱 라이브러리 비교 - Gson vs Moshi


✨ 개요

안드로이드 앱에서 서버와 통신할 때 가장 자주 사용하는 포맷은 단연 JSON입니다. 이를 객체로 파싱하거나 객체를 JSON으로 직렬화(Serialize)할 때 필요한 것이 바로 JSON 파싱 라이브러리인데요. 그중 대표적으로 많이 사용되는 것이 Gson과 Moshi입니다.


1. Gson과 Moshi 란?

라이브러리 설명
Gson Google에서 만든 JSON 파서, 오래되고 널리 사용됨
Moshi Square에서 만든 경량 JSON 파서, 최신 안드로이드 앱에서 많이 채택됨

2. 의존성 추가

// Gson
implementation("com.google.code.gson:gson:2.10.1")

// Moshi
implementation("com.squareup.moshi:moshi:1.15.0")
implementation("com.squareup.moshi:moshi-kotlin:1.15.0")
kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // 어노테이션 기반 매핑 시 필요

3. 사용 예제

데이타 클래스

data class User(
    val id: Int,
    val name: String,
    val email: String
)

Gson

val json = """{"id":1, "name":"Joo", "email":"joo@example.com"}"""
val gson = Gson()
val user = gson.fromJson(json, User::class.java)
println(user.name) // Joo

val jsonOutput = gson.toJson(user)

Moshi

val json = """{"id":1, "name":"Joo", "email":"joo@example.com"}"""
val moshi = Moshi.Builder().build()
val adapter = moshi.adapter(User::class.java)
val user = adapter.fromJson(json)
println(user?.email) // joo@example.com

val jsonOutput = adapter.toJson(user)

4. Gson vs Moshi 비교

항목 Gson Moshi
제작사 Google Square
속도/성능 느린 편 (리플렉션 기반) 빠름 (옵션에 따라 코드 생성 가능)
Kotlin 지원 약함 (Kotlin 데이터클래스 이슈 있음) 강력함 (moshi-kotlin 지원)
커스터마이징 쉽지만 코드가 복잡해질 수 있음 어노테이션 기반으로 깔끔함
오류 처리 유연하나 런타임 오류 많음 엄격하고 안정적
유지보수 거의 업데이트 없음 활발히 유지보수

5. Moshi 사용 시 주의할 점


6. 성능 비교 (요약)


7. 결론

Gson과 Moshi는 각각 장단점이 있지만, 2020년 이후 안드로이드 개발 트렌드에서는 Moshi가 점점 더 널리 채택되고 있습니다. 특히 Kotlin과의 궁합, Retrofit 연동, 성능 측면에서 Moshi는 매우 우수한 선택입니다.



Related Posts