Список значений в Kotlin
Массив в JSON записывают квадратными скобками и
элементами через запятую. Свойство типа List
в @Serializable классе автоматически
превращается в такой массив, если элемент списка
тоже поддерживается кодеком.
Группа участников проекта - имя команды и список
логинов. Оба поля входят в один data class:
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class ProjectTeam(val name: String, val members: List<String>)
fun main() {
val team = ProjectTeam("alpha", listOf("kim", "lee", "pat"))
println(Json.encodeToString(team))
}
В строке появится ключ members со значением-массивом
строк. Пустой список сериализуется как [],
порядок элементов сохраняется.
Разбор из текста восстанавливает List с тем же
порядком. Достаточно передать JSON, где массив уже
задан литералом:
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class ProjectTeam(val name: String, val members: List<String>)
fun main() {
val raw = """{"name":"beta","members":["ada","bob"]}"""
val team = Json.decodeFromString<ProjectTeam>(raw)
println(team.members.size)
println(team.members.first())
}
Опишите @Serializable RecipeCard
с полем title и списком tags.
Запишите карточку с названием "Soup"
и тегами "hot", "veg" в JSON
и выведите строку.
Разберите JSON
{"title":"Pasta","tags":["italian","fast"]}
в RecipeCard и выведите второй тег
отдельной строкой.