Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpSrInr 132 of 299 menu
◀ ▶

Введение в сериализацию в Kotlin

Сериализация - перевод значения в последовательность символов, которую можно сохранить или передать. Обратный шаг - десериализация: из текста снова получают поля объекта с теми же данными.

Для обмена между программами часто берут формат JSON: фигурные скобки, пары имя-значение, кавычки у строк. Kotlin не встроил такой обмен в язык, но библиотека kotlinx.serialization генерирует код по объявлению класса, если его пометить аннотацией @Serializable.

Ключевое слово data class с двумя свойствами удобно описывает запись каталога: название и количество. Аннотация говорит компилятору подготовить правила записи и чтения для этого типа:

import kotlinx.serialization.Serializable @Serializable data class CatalogItem(val title: String, val qty: Int)

После подключения модуля JSON готовый объект можно превратить в одну строку. Для элемента с названием "notebook" и количеством 3 текст будет по смыслу равен {"title":"notebook","qty":3} - имена полей совпадают с именами свойств в Kotlin.

Полный фрагмент программы с записью в строку выглядит так:

import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class CatalogItem(val title: String, val qty: Int) fun main() { val item = CatalogItem("notebook", 3) val text = Json.encodeToString(item) println(text) }

В консоли появляется JSON без переносов. Эту же строку можно передать в другой процесс или положить в файл, а затем восстановить CatalogItem с теми же значениями полей.

Аннотация не меняет поведение класса в обычном коде: конструктор, copy и сравнение по полям остаются как у любого data class. Дополнительно появляется мост между объектом в памяти и текстовым представлением.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить