Класс JsonEncoder
Класс JsonEncoder преобразует объекты Dart
(такие как числа, строки, списки, словари) в строку
формата JSON. В первом параметре конструктора можно
передать функцию toEncodable, которая
будет вызываться для объектов, не поддерживающих
прямую сериализацию. Второй параметр
indent задает строку отступа для
форматирования результата.
Синтаксис
JsonEncoder([Object? toEncodable(Object? object)?, String? indent])
Пример
Давайте закодируем словарь с простыми значениями:
import 'dart:convert';
void main()
{
var encoder = JsonEncoder();
var data = {'a': 1, 'b': 2, 'c': 3};
print(encoder.convert(data));
}
Результат выполнения кода:
{"a":1,"b":2,"c":3}
Пример
Давайте используем параметр indent
для форматирования вывода:
import 'dart:convert';
void main()
{
var encoder = JsonEncoder(null, ' ');
var data = {'a': 1, 'b': 2};
print(encoder.convert(data));
}
Результат выполнения кода:
{
"a": 1,
"b": 2
}
Пример
Давайте закодируем список строк:
import 'dart:convert';
void main()
{
var encoder = JsonEncoder();
var data = ['a', 'b', 'c', 'd', 'e'];
print(encoder.convert(data));
}
Результат выполнения кода:
["a","b","c","d","e"]
Пример
Давайте передадим функцию toEncodable,
чтобы закодировать объект пользовательского класса:
import 'dart:convert';
class Point
{
int x;
int y;
Point(this.x, this.y);
}
void main()
{
var encoder = JsonEncoder((object) {
if (object is Point) {
return {'x': object.x, 'y': object.y};
}
return object.toString();
});
var point = Point(1, 2);
print(encoder.convert(point));
}
Результат выполнения кода:
{"x":1,"y":2}
Смотрите также
-
класс
JsonCodec,
который объединяет кодирование и декодирование JSON -
метод
encode,
который кодирует объект в строку JSON -
метод
decode,
который декодирует строку JSON в объект Dart -
функция
jsonEncode,
которая является упрощенной оберткой для JsonEncoder