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

Значение по умолчанию в Kotlin

Не каждый внешний документ содержит полный набор ключей. Если в data class у параметра задано значение по умолчанию, отсутствующий ключ при чтении не считается ошибкой - подставляется default из конструктора.

Настройки интерфейса часто описывают темой и размером шрифта. Для темы можно оставить запасной вариант прямо в объявлении:

import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class UiPrefs(val theme: String = "light", val fontSize: Int) fun main() { val raw = """{"fontSize":16}""" val prefs = Json.decodeFromString<UiPrefs>(raw) println(prefs.theme) println(prefs.fontSize) }

Ключ theme в тексте отсутствует, поэтому поле получает "light". Поле fontSize берётся из JSON как 16.

При записи поля с default обычно попадают в строку только если они реально отличаются от умолчания или явно заданы в объекте. Проверим полный и укороченный объект:

import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class UiPrefs(val theme: String = "light", val fontSize: Int) fun main() { val full = UiPrefs(theme = "dark", fontSize = 14) val short = Json.decodeFromString<UiPrefs>("""{"fontSize":14}""") println(Json.encodeToString(full)) println(short.theme) }

Сделайте @Serializable AlertConfig с channel по умолчанию "email" и обязательным priority типа Int. Из {"priority":2} получите объект и выведите канал и приоритет.

Создайте AlertConfig только с приоритетом 1 через разбор короткого JSON без ключа канала. Затем создайте объект с каналом "sms" и тем же приоритетом, запишите оба в текст и выведите обе строки подряд.

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