코틀린에서 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
```
---
Q5: JSON 객체를 코틀린 Map 타입으로 변환하는 간단한 방법은?
A5: Gson을 사용하면 간단히 변환할 수 있습니다.
val type = object : TypeToken
각 라이브러리는 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
8) } ``` 결론 코틀린에서 JSON 데이터를 처리하는 방법은 다양하며, 선택한 라이브러리에 따라 사용법이 조금씩 다릅니다.
`Gson`은 간단하고 널리 사용되며, `Moshi`는 Kotlin과의 호환성이 뛰어나고, `Kotlinx.serialization`은 Kotlin 언어에 최적화된 기능을 제공합니다.
각 라이브러리의 특성을 고려하여 프로젝트에 적합한 라이브러리를 선택하면 됩니다.
작성자:
김민재 [비회원]
| 작성일자: 1년 전
2024-09-09 09:47:15
조회수: 173 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 173 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.