Что такое kotlinx.serialization?
Kotlinx.serialization — это официальная библиотека Kotlin для сериализации и десериализации данных, включая формат JSON. Она предоставляет мощный и типобезопасный способ преобразования объектов Kotlin в JSON и обратно, без использования рефлексии и с поддержкой мультиплатформенности (JVM, JS, Native).
Зачем нужна JSON обработка в Kotlin?
В современной разработке на Kotlin (Android, серверные приложения на Ktor, мультиплатформенные проекты) работа с JSON — обязательная задача: обмен данными с REST API, конфигурационные файлы, хранение данных. Kotlinx.serialization решает её эффективно, безопасно и с минимальным boilerplate-кодом.
Установка
Для использования библиотеки добавьте плагин в build.gradle.kts:
plugins {
kotlin("plugin.serialization") version "1.9.22"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
}Для Maven добавьте зависимость и плагин kotlin-maven-plugin с конфигурацией serialization.
Основные функции
- @Serializable — аннотация для классов, которые нужно сериализовать.
- Json.encodeToString() — преобразование объекта в JSON-строку.
- Json.decodeFromString() — парсинг JSON-строки в объект.
- JsonObject / JsonElement — динамическая работа с JSON без создания DTO.
- @Transient, @Required, @SerialName — тонкая настройка полей.
- JsonConfiguration — настройки форматирования (prettyPrint, ignoreUnknownKeys).
Пример кода на Kotlin
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class User(val name: String, val age: Int)
fun main() {
val user = User("Алиса", 30)
// Сериализация
val jsonString = Json.encodeToString(user)
println(jsonString) // {"name":"Алиса","age":30}
// Десериализация
val decodedUser = Json.decodeFromString<User>(jsonString)
println(decodedUser) // User(name=Алиса, age=30)
// Работа с динамическим JSON
val jsonObject = Json.parseToJsonElement("""{"city":"Москва","zip":101000}""").jsonObject
println(jsonObject["city"]) // "Москва"
}Когда использовать
Библиотека идеальна для:
- Android-приложений (Retrofit + kotlinx.serialization).
- Серверных проектов на Ktor.
- Мультиплатформенных приложений (KMP).
- Любых проектов, где нужна быстрая и безопасная работа с JSON без рефлексии.
Она превосходит Gson и Jackson по производительности и безопасности типов, особенно в Kotlin-проектах.