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

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

Массив в JSON записывают квадратными скобками и элементами через запятую. Поле типа List<String> в карте из toJson превращается в такой массив, если каждый элемент списка сам допустим для jsonEncode.

Группа участников проекта - имя команды и список логинов. Оба поля входят в один класс:

import 'dart:convert'; class ProjectTeam { ProjectTeam(this.name, this.members); final String name; final List<String> members; Map<String, Object?> toJson() => { 'name': name, 'members': members, }; factory ProjectTeam.fromJson(Map<String, Object?> json) { return ProjectTeam( json['name'] as String, (json['members'] as List<Object?>) .map((e) => e as String) .toList(), ); } } var team = ProjectTeam('alpha', ['kim', 'lee', 'pat']); print(jsonEncode(team.toJson()));

В строке появится ключ members со значением-массивом строк. Пустой список сериализуется как [], порядок элементов сохраняется.

Разбор из текста восстанавливает List с тем же порядком. Достаточно передать JSON, где массив уже задан литералом:

import 'dart:convert'; class ProjectTeam { ProjectTeam(this.name, this.members); final String name; final List<String> members; Map<String, Object?> toJson() => { 'name': name, 'members': members, }; factory ProjectTeam.fromJson(Map<String, Object?> json) { return ProjectTeam( json['name'] as String, (json['members'] as List<Object?>) .map((e) => e as String) .toList(), ); } } var text = '{"name":"beta","members":["ada","bob"]}'; var raw = jsonDecode(text); if (raw is Map<String, Object?>) { var team = ProjectTeam.fromJson(raw); print(team.members.length); print(team.members.first); }

Опишите класс RecipeCard с полем title и списком tags. Запишите карточку с названием "Soup" и тегами "hot", "veg" в JSON и выведите строку.

Разберите JSON {"title":"Pasta","tags":["italian","fast"]} в RecipeCard и выведите второй тег отдельной строкой.

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