2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

코틀린에서 JSON 데이터를 처리하는 방법은?

_____
Q1: 코틀린에서 JSON 데이터를 처리할 때 주로 사용하는 라이브러리는 무엇인가요?
A1: 코틀린에서는 대표적으로 다음과 같은 라이브러리를 사용합니다.
- Gson (Google)
- Moshi (Square)
- kotlinx.serialization (코틀린 공식 직렬화 라이브러리)

---

Q2: Gson 라이브러리를 사용해 JSON 문자열을 객체로 변환하는 기본 방법은?
A2: Gson을 사용하려면 먼저 Gson 객체를 생성한 뒤 `fromJson()` 메소드를 사용합니다.
```kotlin
val gson = Gson()
val jsonString = """{"name":"John", "age":30}"""
data class Person(val name: String, val age: Int)
val person = gson.fromJson(jsonString, Person::class.java)
```

---

Q3: Moshi 라이브러리로 JSON을 객체로 파싱하는 방법은?
A3: Moshi는 JsonAdapter를 생성하여 사용합니다.
```kotlin
val moshi = Moshi.Builder().build()
val jsonAdapter = moshi.adapter(Person::class.java)
val jsonString = """{"name":"John", "age":30}"""
val person = jsonAdapter.fromJson(jsonString)
```

---

Q4: kotlinx.serialization 라이브러리를 쓰려면 어떻게 해야 하나요?
A4: 먼저 data class에 `@Serializable` 애노테이션을 붙이고, 의존성을 추가해야 합니다.
```kotlin
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class Person(val name: String, val age: Int)

val jsonString = """{"name":"John", "age":30}"""
val person = Json.decodeFromString(jsonString)
```

---

Q5: JSON 객체를 코틀린 Map 타입으로 변환하는 간단한 방법은?
A5: Gson을 사용하면 간단히 변환할 수 있습니다.
```kotlin
val type = object : TypeToken>() {}.type
val map: Map = gson.fromJson(jsonString, type)
```

---

Q6: JSON 배열을 코틀린 리스트로 변환할 때는?
A6: 역시 Gson 기준으로, `TypeToken`을 사용하면 됩니다.
```kotlin
val type = object : TypeToken>() {}.type
val list: List = gson.fromJson(jsonArrayString, type)
```

---

Q7: JSON 직렬화(객체를 JSON 문자열로 변환) 방법은?
A7: 각 라이브러리별로 직렬화 메서드를 제공합니다.
- Gson: `gson.toJson(person)`
- Moshi: `jsonAdapter.toJson(person)`
- kotlinx.serialization: `Json.encodeToString(person)`

---

Q8: null 혹은 옵셔널 값이 포함된 JSON을 안전하게 처리하려면?
A8: 코틀린의 nullable 타입과 해당 라이브러리의 null 처리 옵션을 조합해 사용합니다.
예: data class에서 필드를 `val age: Int? = null`로 선언하거나, Moshi에서 `@JsonClass(generateAdapter = true)`를 사용해 옵셔널 지원 가능.

---

Q9: JSON 필드 이름과 코틀린 프로퍼티명이 다를 때 어떻게 매핑하나요?
A9:
- Gson: `@SerializedName("json_field_name")` 애노테이션 사용
- Moshi: `@Json(name = "json_field_name")` 애노테이션
- kotlinx.serialization: `@SerialName("json_field_name")` 애노테이션

---

Q10: 코틀린에서 JSON을 파싱할 때 가장 권장하는 방법은?
A10:
- 순수 코틀린 프로젝트나 멀티플랫폼 대응이 필요하면 kotlinx.serialization 추천
- 기존 자바 라이브러리와 호환성 필요하면 Gson
- Android와 Retrofit 연동에는 Moshi가 성능과 사용성 면에서 인기

---

요약: 코틀린에서 JSON 처리는 Gson, Moshi, kotlinx.serialization 같은 검증된 라이브러리를 사용해 쉽고 안전하게 할 수 있으며, 각 라이브러리마다 JSON 문자열 ↔ 객체 변환 API와 애노테이션 커스터마이징 기능을 제공합니다.
코틀린에서 JSON 데이터를 처리하는 방법은 여러 가지가 있으며, 주로 사용하는 라이브러리로는 `Gson`, `Moshi`, `Kotlinx.serialization` 등이 있습니다.

각 라이브러리는 JSON 데이터를 직렬화(객체를 JSON 문자열로 변환)하고 역직렬화(JSON 문자열을 객체로 변환)하는 기능을 제공합니다.

아래에서는 각 라이브러리의 사용 방법과 예제를 자세히 설명하겠습니다.

1. Gson Gson은 Google에서 제공하는 JSON 처리 라이브러리로, 간단하고 사용하기 쉬운 API를 제공합니다.

Gradle 의존성 추가 ```groovy implementation 'com.google.code.gson:gson:2.8.8' ``` 데이터 클래스 정의 ```kotlin data class User(val name: String, val age: Int) ``` JSON 직렬화 및 역직렬화 ```kotlin import com.google.gson.Gson fun main() { val gson = Gson() // 객체를 JSON 문자열로 변환 val user = User("Alice", 30) val jsonString = gson.toJson(user) println(jsonString) // {"name":"Alice","age":30} // JSON 문자열을 객체로 변환 val userFromJson = gson.fromJson(jsonString, User::class.java) println(userFromJson) // User(name=Alice, age=30) } ```

2. Moshi Moshi는 Square에서 개발한 JSON 처리 라이브러리로, Kotlin과의 호환성이 뛰어나고 Kotlin의 데이터 클래스와 잘 통합됩니다.

Gradle 의존성 추가 ```groovy implementation 'com.squareup.moshi:moshi:1.12.0' implementation 'com.squareup.moshi:moshi-kotlin:1.12.0' ``` 데이터 클래스 정의 ```kotlin data class User(val name: String, val age: Int) ``` JSON 직렬화 및 역직렬화 ```kotlin import com.squareup.moshi.Moshi import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory fun main() { val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build() val jsonAdapter = moshi.adapter(User::class.java) // 객체를 JSON 문자열로 변환 val user = User("Bob", 2

5) val jsonString = jsonAdapter.toJson(user) println(jsonString) // {"name":"Bob","age":25} // JSON 문자열을 객체로 변환 val userFromJson = jsonAdapter.fromJson(jsonString) println(userFromJson) // User(name=Bob, age=2

5) } ```

3. Kotlinx.serialization Kotlinx.serialization은 Kotlin 공식 라이브러리로, Kotlin 언어에 최적화된 JSON 처리 기능을 제공합니다.

이 라이브러리는 Kotlin의 코루틴 및 기타 기능과 잘 통합됩니다.

Gradle 의존성 추가 ```groovy implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3' ``` 데이터 클래스 정의 ```kotlin import kotlinx.serialization.Serializable @Serializable data class User(val name: String, val age: Int) ``` JSON 직렬화 및 역직렬화 ```kotlin import kotlinx.serialization.encodeToString import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json fun main() { val json = Json { prettyPrint = true } // 객체를 JSON 문자열로 변환 val user = User("Charlie", 2

8) val jsonString = json.encodeToString(user) println(jsonString) // { "name": "Charlie", "age": 28 } // JSON 문자열을 객체로 변환 val userFromJson = json.decodeFromString(jsonString) println(userFromJson) // User(name=Charlie, age=2

8) } ``` 결론 코틀린에서 JSON 데이터를 처리하는 방법은 다양하며, 선택한 라이브러리에 따라 사용법이 조금씩 다릅니다.

`Gson`은 간단하고 널리 사용되며, `Moshi`는 Kotlin과의 호환성이 뛰어나고, `Kotlinx.serialization`은 Kotlin 언어에 최적화된 기능을 제공합니다.

각 라이브러리의 특성을 고려하여 프로젝트에 적합한 라이브러리를 선택하면 됩니다.

작성자: 김민재 [비회원] | 작성일자: 1년 전 2024-09-09 09:47:15
조회수: 173 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.