Запись в строку в Dart
Запись в строку начинается с готовых данных в памяти.
Функция jsonEncode из dart:convert
собирает компактный JSON без лишних пробелов и
переносов строк из карты, списка, строки или числа.
Описание доставки удобно хранить как класс
с идентификатором и весом посылки. Метод
toJson возвращает карту с ключами,
которые должны появиться в тексте:
import 'dart:convert';
class Shipment {
Shipment(this.id, this.weightKg);
final String id;
final double weightKg;
Map<String, Object?> toJson() => {
'id': id,
'weightKg': weightKg,
};
}
var parcel = Shipment('A-17', 2.5);
var text = jsonEncode(parcel.toJson());
print(text);
В выводе имена ключей совпадают с картой из
toJson, числа и строки записываются
в формате, принятом для JSON. Тот же прием
подходит к списку внутри карты или к
nullable-полю, если в карту попало значение
null.
Иногда строку нужно собрать с отступами для чтения
человеком. Объект JsonEncoder с параметром
indent разбивает результат на строки
с вложенностью:
import 'dart:convert';
class Shipment {
Shipment(this.id, this.weightKg);
final String id;
final double weightKg;
Map<String, Object?> toJson() => {
'id': id,
'weightKg': weightKg,
};
}
var parcel = Shipment('B-02', 0.8);
var pretty = const JsonEncoder.withIndent(' ');
print(pretty.convert(parcel.toJson()));
Опишите класс Ticket с полями
code типа String и
price типа int, добавьте
toJson. Создайте билет с кодом
"K7" и ценой 1200, запишите
его в JSON-строку и выведите результат.
Для того же типа включите красивый вывод через
JsonEncoder.withIndent. Запишите билет
с кодом "M1" и ценой 500
и выведите многострочный текст.