Класс JsonDecoder
Класс JsonDecoder используется для
преобразования данных из формата JSON
в структуры данных, понятные языку Dart.
В отличие от простой функции jsonDecode,
данный класс позволяет настроить процесс
декодирования, например, передать функцию
для обработки каждого элемента. Экземпляр
класса создается через конструктор
JsonDecoder, а метод convert
принимает строку для декодирования.
Синтаксис
JsonDecoder().convert(str)
Пример
Давайте создадим экземпляр декодера и преобразуем простую JSON-строку в словарь Dart:
import 'dart:convert';
void main()
{
String str = '{"a": 1, "b": 2, "c": 3}';
JsonDecoder decoder = JsonDecoder();
var res = decoder.convert(str);
print(res);
}
Результат выполнения кода:
{a: 1, b: 2, c: 3}
Пример
Давайте декодируем JSON-массив и получим список значений:
import 'dart:convert';
void main()
{
String str = '["a", "b", "c", "d", "e"]';
JsonDecoder decoder = JsonDecoder();
var res = decoder.convert(str);
print(res);
}
Результат выполнения кода:
[a, b, c, d, e]
Пример
Давайте воспользуемся вторым параметром
reviver для преобразования значений
в процессе декодирования. Умножим каждое
число на два:
import 'dart:convert';
void main()
{
String str = '{"a": 1, "b": 2, "c": 3}';
JsonDecoder decoder = JsonDecoder((key, value) {
if (value is int) {
return value * 2;
}
return value;
});
var res = decoder.convert(str);
print(res);
}
Результат выполнения кода:
{a: 2, b: 4, c: 6}
Смотрите также
-
класс
JsonEncoder,
который выполняет обратное преобразование -
функция
jsonDecode,
которая декодирует JSON без настройки -
функция
jsonEncode,
которая кодирует объекты в JSON -
параметр
reviver,
который настраивает преобразование значений