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

Имя поля в Kotlin

Внешний API часто задаёт имена полей в snake_case, а в Kotlin свойства пишут в camelCase. Без пометки ключ в JSON совпадает с именем свойства, и чужой текст не разберётся.

Аннотацию @SerialName вешают на параметр конструктора и указывают строку, которую нужно читать и писать вместо имени свойства:

import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable data class RemoteProfile( @SerialName("full_name") val fullName: String, @SerialName("age_years") val ageYears: Int )

При записи в текст ключи будут "full_name" и "age_years", а в коде по-прежнему используют fullName и ageYears:

import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class RemoteProfile( @SerialName("full_name") val fullName: String, @SerialName("age_years") val ageYears: Int ) fun main() { val raw = """{"full_name":"Ann","age_years":30}""" val profile = Json.decodeFromString<RemoteProfile>(raw) println(profile.fullName) println(Json.encodeToString(profile)) }

Разбор принимает только ожидаемые ключи из аннотаций. Обратная запись снова отдаёт тот же формат, который ждёт сервер или файл конфигурации.

Сделайте @Serializable data class SensorRow: свойство deviceId в JSON должно называться "device_id", readingC - "temp_c". Разберите строку {"device_id":"s1","temp_c":21.5} и выведите оба поля.

Создайте SensorRow с идентификатором "s9" и температурой 18.0, запишите объект в текст и убедитесь, что в строке есть ключи "device_id" и "temp_c" без camelCase-имён свойств.

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