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

Список записей API в Kotlin

Коллекция на сервере часто приходит как JSON-массив в корне ответа. В Kotlin для него указывают тип List с элементом-моделью, помеченной @Serializable.

Адрес "/users" без суффикса возвращает все десять учебных пользователей. После чтения тела удобно узнать длину списка и первое имя:

import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class ApiUser(val id: Int, val name: String) fun main() { val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/users", ), ) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val users = json.decodeFromString<List<ApiUser>>( response.body(), ) println(users.size) println(users.first().name) }

Фильтр через параметры строки запроса меняет состав массива. Для "/posts?userId=1" достаточно модели поста с полями userId и title:

import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @Serializable data class ApiPost(val userId: Int, val title: String) fun main() { val json = Json { ignoreUnknownKeys = true } val client = HttpClient.newBuilder().build() val request = HttpRequest.newBuilder() .uri( URI.create( "https://jsonplaceholder.typicode.com/posts?userId=1", ), ) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) val posts = json.decodeFromString<List<ApiPost>>( response.body(), ) println(posts.size) }

Разберите локальную строку ["x","y","z"] в список строк и выведите его размер.

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