Hanbit the Developer

Kotlin Documentation | Serialization 본문

Mobile/Kotlin

Kotlin Documentation | Serialization

hanbikan 2023. 5. 26. 14:47

Kotlin Documentation 시리즈에 대해

Category: Official libraries

문서 링크: https://kotlinlang.org/docs/serialization.html


직렬화는 데이터를 네트워크로 보내거나 데이터베이스에 저장할 수 있는 형태로 변환하는 것이고, 역직렬화는 그러한 데이터를 런타임 오브젝트로 변환하는 것이다.

Libraries

kotlinx.serialization은 JVM, JavaScript, Native 플랫폼과 JSON, CBOR, protocol buffers 등의 다양한 직렬 포멧을 지원하는 라이브러리를 제공한다.

Example: JSON serialization

@Serializable 주석으로 클래스를 serializable하게 한다.

@Serializable
data class Data(val a: Int, val b: String)

이제 Json.encodeToString()을 통해 직렬화할 수 있다.

fun main() {
   val json = Json.encodeToString(Data(42, "str"))
}

위 결과로 {"a": 42, "b": "str"}를 얻게 된다.

또한 리스트 같은 컬렉션을 직렬화할 수 있다.

eval dataList = listOf(Data(42, "str"), Data(12, "test"))
val jsonList = Json.encodeToString(dataList)

역직렬화하기 위해서는 decodeFromString()을 호출한다:

@Serializable
data class Data(val a: Int, val b: String)

fun main() {
   val obj = Json.decodeFromString<Data>("""{"a":42, "b": "str"}""")
}