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

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

Коллекция на сервере часто приходит как JSON-массив в корне ответа. В Dart после jsonDecode проверяют List<Object?> и для каждого элемента-карты вызывают fromJson.

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

import 'package:http/http.dart' as http; import 'dart:convert'; class ApiUser { ApiUser(this.id, this.name); final int id; final String name; factory ApiUser.fromJson(Map<String, Object?> json) { return ApiUser( json['id'] as int, json['name'] as String, ); } } void main() async { var response = await http.get( Uri.parse( 'https://jsonplaceholder.typicode.com/users', ), ); var raw = jsonDecode(response.body); if (raw is List<Object?>) { print(raw.length); if (raw.isNotEmpty && raw.first is Map<String, Object?>) { var user = ApiUser.fromJson( raw.first as Map<String, Object?>, ); print(user.name); } } }

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

import 'package:http/http.dart' as http; import 'dart:convert'; class ApiPost { ApiPost(this.userId, this.title); final int userId; final String title; factory ApiPost.fromJson(Map<String, Object?> json) { return ApiPost( json['userId'] as int, json['title'] as String, ); } } void main() async { var response = await http.get( Uri.parse( 'https://jsonplaceholder.typicode.com/posts?userId=1', ), ); var raw = jsonDecode(response.body); if (raw is List<Object?>) { print(raw.length); } }

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

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