Kotlinx.Serialization은 Kotlin 언어에서 데이터 직렬화와 역직렬화를 수행하는 라이브러리입니다. 이는 Kotlin 멀티플랫폼 프로젝트에서 쉽게 사용할 수 있도록 설계되었으며, JSON, ProtoBuf, CBOR, XML 등 여러 포맷을 지원합니다. 여기서 JSON 포맷을 중심으로 설명하겠습니다.
Kotlinx.Serialization의 주요 특징
- 다양한 포맷 지원: JSON, ProtoBuf, CBOR, XML 등 여러 포맷을 지원합니다.
- Kotlin 멀티플랫폼 지원: Kotlin/JVM, Kotlin/JS, Kotlin/Native 등 다양한 플랫폼에서 사용할 수 있습니다.
- 강력한 타입 안전성: Kotlin의 강력한 타입 시스템을 활용하여 직렬화와 역직렬화 과정에서 타입 안전성을 보장합니다.
- 애노테이션 기반 설정: 직렬화와 역직렬화 과정을 애노테이션으로 쉽게 설정할 수 있습니다.
간단한 예제
이제 JSON 문자열을 DTO(Data Transfer Object)로 변환하는 간단한 예제를 통해 Kotlinx.Serialization의 사용법을 알아보겠습니다.
1. 라이브러리 의존성 추가
먼저, 프로젝트의 build.gradle.kts 파일에 다음과 같이 Kotlinx.Serialization 의존성을 추가합니다.
Kotlin Serialization을 사용하려면 Kotlin 컴파일러 1.4.0이상이 필요합니다. 1.4.0 이전 버전의 Kotlin은 Kotlin 직렬화의 안정적인 릴리스에서 지원되지 않습니다.
plugins {
kotlin("jvm") version "2.0.0"
kotlin("plugin.serialization") version "2.0.0"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
}
2. DTO 클래스 정의
다음으로, JSON 데이터를 매핑할 DTO 클래스를 정의합니다. 이 클래스는 @Serializable 애노테이션으로 표시해야 합니다.
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class User(
val name: String,
val age: Int,
@SerialName("Email")
val email: String
)
3. JSON 문자열을 DTO로 변환
이제 JSON 문자열을 DTO로 변환하는 코드를 작성합니다. Json 객체를 사용하여 문자열을 파싱하고 DTO로 변환합니다.
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
fun main() {
val jsonString = """
{
"name": "John Doe",
"age": 30,
"Email": "john.doe@example.com"
}
"""
// JSON 문자열을 User 객체로 변환
val user: User = Json.decodeFromString(jsonString)
// 결과 출력
println(user)
}
위 코드에서는 Json.decodeFromString 함수를 사용하여 JSON 문자열을 User 객체로 변환합니다. 변환된 User 객체를 출력하면 다음과 같은 결과가 나타납니다.
User(name=John Doe, age=30, email=john.doe@example.com)
코드 설명
- DTO 클래스 정의: @Serializable 애노테이션을 사용하여 User 클래스가 직렬화와 역직렬화될 수 있음을 표시합니다.
- JSON 문자열 준비: JSON 형식의 문자열을 준비합니다.
- 역직렬화: Json.decodeFromString 함수를 사용하여 JSON 문자열을 User 객체로 변환합니다.
- 출력: 변환된 User 객체를 출력합니다.
이 예제는 Kotlinx.Serialization 라이브러리를 사용하여 JSON 문자열을 Kotlin 데이터 클래스로 변환하는 기본적인 과정을 보여줍니다. 이를 통해 다양한 JSON 데이터를 쉽게 처리할 수 있습니다.
참고자료
'개발 > kotlin' 카테고리의 다른 글
Spring Boot JPA와 Kotlin Reflect 오류 해결 방법 (0) | 2024.08.08 |
---|---|
object, companion object, 최상위 함수 정리 (0) | 2024.07.06 |
[라이브러리] [Proj4J] 좌표계 변환 방법 (0) | 2024.07.04 |
[kotlin] ByteArray를 Int, Int를 ByteArray로 변경하는 방법 (0) | 2024.05.29 |