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

Вложенный объект в Kotlin

JSON умеет вкладывать объекты друг в друга через вложенные фигурные скобки. В Kotlin для этого достаточно объявить свойство с типом другого @Serializable класса.

Адрес и контакт клиента логично разделить: сначала тип для города и индекса, затем тип заказа с полем адреса. Оба класса помечают аннотацией:

import kotlinx.serialization.Serializable @Serializable data class GeoPoint(val city: String, val postal: String) @Serializable data class ClientOrder(val id: Int, val shipTo: GeoPoint)

Запись в строку собирает один JSON-объект, где значение shipTo само является объектом с ключами city и postal:

import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class GeoPoint(val city: String, val postal: String) @Serializable data class ClientOrder(val id: Int, val shipTo: GeoPoint) fun main() { val order = ClientOrder( id = 501, shipTo = GeoPoint("Oslo", "0150") ) println(Json.encodeToString(order)) }

Чтение из текста работает в обратном порядке: сначала разбирается внешний объект, затем вложенный блок для GeoPoint. Если внутренний тип забыть пометить @Serializable, компилятор не сгенерирует кодек для всей цепочки.

Объявите @Serializable DurationSlot с полями hours и minutes, затем MeetingPlan с title и slot типа DurationSlot. Запишите план с названием "sync" и длительностью 1 час 30 минут в JSON и выведите строку.

Из текста {"title":"demo","slot":{"hours":0,"minutes":45}} восстановите MeetingPlan и выведите название и суммарные минуты как одно число 45.

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