Сериализация
Сериализация — это процесс преобразования данных, используемых приложением, в формат, который можно передать по сети или сохранить в базе данных либо файле. Десериализация — обратный процесс преобразования внешних данных обратно в объект времени выполнения. Вместе они необходимы большинству приложений, обменивающихся данными с третьими сторонами.
Некоторые форматы сериализации данных, такие как JSON и Protocol Buffers, особенно распространены. Эти форматы не зависят от языка и платформы, поэтому их можно использовать для обмена данными между системами, написанными на любом современном языке. Kotlin предоставляет эту возможность с помощью библиотек kotlinx.serialization, поддерживающих несколько платформ и форматов данных.
Если вы впервые знакомитесь с сериализацией в Kotlin, рекомендуем начать с руководства Начало работы с сериализацией. В нём показано, как добавить библиотеку сериализации Kotlin в проект, а также как сериализовать и десериализовать первый класс.
Библиотеки сериализации Kotlin
Сериализация Kotlin поддерживает все платформы, включая JVM, JavaScript и Native. Независимо от целевой платформы можно использовать одно и то же объявление зависимости.
Сериализация Kotlin поддерживает различные форматы, такие как JSON, CBOR и Protocol Buffers, с помощью отдельных библиотек форматов сериализации. Эти библиотеки построены на основе основной библиотеки kotlinx.serialization. Полный список поддерживаемых форматов сериализации см. в разделе Поддерживаемые форматы сериализации.
Все библиотеки форматов сериализации Kotlin входят в группу org.jetbrains.kotlinx:, их названия начинаются с kotlinx-serialization- и имеют суффиксы, обозначающие формат сериализации. Например:
org.jetbrains.kotlinx:kotlinx-serialization-jsonобеспечивает сериализацию JSON.org.jetbrains.kotlinx:kotlinx-serialization-cborобеспечивает сериализацию CBOR.
Для библиотек kotlinx.serialization используется собственная система версионирования, независимая от Kotlin. Последние версии выпусков можно найти на GitHub.
Поддерживаемые форматы сериализации
kotlinx.serialization включает библиотеки форматов сериализации для различных форматов:
Формат |
Идентификатор артефакта |
Платформа |
Статус |
|---|---|---|---|
Все поддерживаемые платформы |
Стабильный |
||
Только JVM |
Экспериментальный |
||
Все поддерживаемые платформы |
Экспериментальный |
||
Все поддерживаемые платформы |
Экспериментальный |
||
Все поддерживаемые платформы |
Экспериментальный |
Все библиотеки форматов сериализации, кроме библиотеки сериализации JSON (kotlinx-serialization-json), являются экспериментальными. Их API могут измениться в любой момент. Подробнее о сериализации JSON см. в разделе Обзор сериализации JSON.
Существуют также поддерживаемые сообществом библиотеки для других форматов сериализации, например YAML или Apache Avro.
Подробнее об экспериментальных форматах сериализации можно узнать в разделе Альтернативные и пользовательские форматы.
Поддерживаемые типы для сериализации
Сериализация Kotlin поддерживает множество встроенных типов, включая все примитивные типы и большинство составных типов из стандартной библиотеки Kotlin, например тип List. Подробнее см. в разделе Сериализация встроенных типов.
Кроме того, классы с аннотацией @Serializable полностью поддерживаются при сериализации, что позволяет преобразовывать экземпляры классов в такие форматы, как JSON, и обратно. Подробнее см. в разделе Сериализация классов.
Что дальше
Изучите основы сериализации Kotlin в руководстве по началу работы с сериализацией.
Узнайте, как библиотека сериализации Kotlin обрабатывает примитивы, коллекции и другие встроенные типы
Изучите более сложные сценарии сериализации JSON в разделе Обзор сериализации JSON.
Изучите раздел Сериализация классов, чтобы узнать, как сериализовать классы и изменять поведение аннотации
@Serializableпо умолчанию.Узнайте, как получать сгенерированные сериализаторы, создавать пользовательские сериализаторы и применять их, в разделе Создание и использование сериализаторов.
Узнайте, как сериализовать различные типы через общий базовый тип, в разделе Сериализация полиморфных классов.
Изучите экспериментальные форматы сериализации, включая CBOR, ProtoBuf и Properties, и узнайте, как создавать пользовательские форматы, в разделе Альтернативные и пользовательские форматы.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/serialization.html