Запись в строку в Kotlin
Запись в строку начинается с помеченного типа и
экземпляра в памяти. Объект Json по умолчанию
собирает компактный JSON без лишних пробелов и
переносов строк.
Описание доставки удобно хранить как data class
с идентификатором и весом посылки. Аннотация
@Serializable включает генерацию кодека
для этого типа:
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class Shipment(val id: String, val weightKg: Double)
fun main() {
val parcel = Shipment("A-17", 2.5)
val text = Json.encodeToString(parcel)
println(text)
}
В выводе имена свойств становятся ключами JSON, числа и строки записываются в формате, принятом для JSON. Тот же вызов можно применить к списку или к nullable-полю внутри класса - правила задаёт объявление типа.
Иногда строку нужно собрать с отступами для чтения
человеком. У объекта Json есть свойство
prettyPrint: при значении true
результат разбивается на строки с вложенностью:
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class Shipment(val id: String, val weightKg: Double)
fun main() {
val parcel = Shipment("B-02", 0.8)
val pretty = Json { prettyPrint = true }
println(pretty.encodeToString(parcel))
}
Опишите @Serializable data class
Ticket с полями code типа
String и price типа Int.
Создайте билет с кодом "K7" и ценой
1200, запишите его в JSON-строку
и выведите результат.
Для того же типа включите красивый вывод через
настройку Json. Запишите билет с кодом
"M1" и ценой 500 и выведите
многострочный текст.