Библиотека kotlinx.serialization для JSON обработки в Kotlin

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое 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-проектах.

Рекомендаций