функция 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.19.6/dart-convert/jsonEncode.html