Функция jsonEncode
Преобразует object в строку JSON.
Если значение содержит объекты, которые не могут быть напрямую закодированы в строку JSON (значение, которое не является числом, булевым значением, строкой, null, списком или словарем с строковыми ключами), используется функция toEncodable, чтобы преобразовать его в объект, который должен быть напрямую закодирован.
Если toEncodable опущено, по умолчанию используется функция, которая возвращает результат вызова .toJson() на объект, который нельзя закодировать.
Сокращенная запись для json.encode. Полезно, если локальная переменная затеняет глобальную константу json.
Пример:
const data = {'text': 'foo', 'value': 2, 'status': false, 'extra': null};
final String jsonString = jsonEncode(data);
print(jsonString); // {"text":"foo","value":2,"status":false,"extra":null}
Пример преобразования в противном случае неподдерживаемого объекта в пользовательский формат JSON:
class CustomClass {
final String text;
final int value;
CustomClass({required this.text, required this.value});
CustomClass.fromJson(Map<String, dynamic> json)
: text = json['text'],
value = json['value'];
static Map<String, dynamic> toJson(CustomClass value) =>
{'text': value.text, 'value': value.value};
}
void main() {
final CustomClass cc = CustomClass(text: 'Dart', value: 123);
final jsonText = jsonEncode({'cc': cc},
toEncodable: (Object? value) => value is CustomClass
? CustomClass.toJson(value)
: throw UnsupportedError('Cannot convert to JSON: $value'));
print(jsonText); // {"cc":{"text":"Dart","value":123}}
}
Реализация
String jsonEncode(Object? object,
{Object? toEncodable(Object? nonEncodable)?}) =>
json.encode(object, toEncodable: toEncodable);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-convert/jsonEncode.html