Параметр reviver у jsonDecode
Параметр reviver передается вторым аргументом
в функцию jsonDecode и представляет собой
функцию обратного вызова, которая вызывается для
каждой пары ключ-значение при декодировании
JSON-строки. В первый параметр этой функции
передается ключ (имя свойства), во второй -
уже декодированное значение. Функция reviver
должна вернуть новое значение, которое заменит
исходное в результирующей структуре. Если
вернуть то же самое значение, оно останется
без изменений.
Синтаксис
jsonDecode(source, reviver(key, value))
Пример
Давайте декодируем JSON-строку и с помощью
reviver удвоим все числовые значения:
import 'dart:convert';
void main()
{
String json = '{"a": 1, "b": 2, "c": 3}';
var res = jsonDecode(json, (key, value) {
if (value is int) {
return value * 2;
}
return value;
});
print(res);
}
Результат выполнения кода:
{a: 2, b: 4, c: 6}
Пример
Давайте с помощью reviver преобразуем
все строковые значения в верхний регистр:
import 'dart:convert';
void main()
{
String json = '{"name": "abcde", "city": "12345"}';
var res = jsonDecode(json, (key, value) {
if (value is String) {
return value.toUpperCase();
}
return value;
});
print(res);
}
Результат выполнения кода:
{name: ABCDE, city: 12345}
Пример
Давайте с помощью reviver удалим из
результата все свойства, ключ которых начинается
с символа подчеркивания:
import 'dart:convert';
void main()
{
String json = '{"a": 1, "_b": 2, "c": 3, "_d": 4}';
var res = jsonDecode(json, (key, value) {
if (key is String && key.startsWith('_')) {
return null;
}
return value;
});
print(res);
}
Результат выполнения кода:
{a: 1, c: 3}
Смотрите также
-
функция
jsonDecode,
которая декодирует JSON-строку -
функция
jsonEncode,
которая кодирует объект в JSON-строку -
параметр
toEncodable,
который управляет кодированием объектов -
класс
JsonDecoder,
который выполняет декодирование JSON