Kotlin Serialization
Serialization is the process of converting a complex object to a format that can be transferred over a network, used by an application, or stored in a database or file.
In Kotlin, serialization tools are made available in kotlinx.serialization. It consists of a few components, the org.jetbrains.kotlin.plugin.serialization Gradle plugin, runtime libraries, and compiler plugins.
Libraries
Kotlin serialization libraries belong to the org.jetbrains.kotlinx: group and begin with kotlinx-serialization- with suffixes that reflect the serialization format, such as json.
Included libraries in kotlinx.serialization for various serialization formats:
- CBOR:
kotlin-serialization-cbor - HOCON:
kotlin-serialization-hocon - Properties:
kotlin-serialization-properties - Protocol buffers:
kotlin-serialization-protobuf - JSON:
kotlin-serialization-json
Implementation
@Serializable
class Project(val name: String, val language: String)
An object is first serialized to its primitive values and then encoded to the desired output format. In Kotlin classes must be explicitly marked @Serializable. Below is an example of JSON encoding using json.encodeToString.
import kotlinx.serialization.*import kotlinx.serialization.json.*@Serializableclass Project(val name: String, val language: String)fun main() {val data = Project("kotlinx.serialization", "Kotlin")println(Json.encodeToString(data))}
The output will be:
{"name":"kotlinx.serialization","language":"Kotlin"}
To decode, json.decodeFromString is used:
import kotlinx.serialization.*import kotlinx.serialization.json.*@Serializabledata class Project(val name: String, val language: String)fun main() {val data = Json.decodeFromString<Project>("""{"name":"kotlinx.serialization","language":"Kotlin"}""")println(data)}
The output will be:
Project(name=kotlinx.serialization, language=Kotlin)
All libraries ,besides JSON serialization, are experimental, for detailed information about serialization formats refer to the Kotlin Serialization Documents and the Kotlin Serialization Guide
Serialization
- .decodeFromByteArray()
- Decodes data from a byte array into an object.
- .decodeFromString()
- Deserializes a string representation into data using the Kotlin Serialization library
- .encodeToByteArray()
- Serializes and converts the given data to a byte array
- .encodeToHexString()
- Encodes the given data to a hexadecimal string.
- .encodeToString()
- Serializes data to a string representation using the Kotlin Serialization library.
- decodeFromHexString()
- Decodes hex-encoded strings.
Contribute to Docs
- Learn more about how to get involved.
- Edit this page on GitHub to fix an error or make an improvement.
- Submit feedback to let us know how we can improve Docs.
Learn Kotlin on Codecademy
- Learn Kotlin, the expressive, open-source programming language developed by JetBrains.
- Beginner Friendly.9 hours