jsonEncode 函数

String jsonEncode(
  1. Object? object,
  2. {Object? toEncodable(
    1. Object? nonEncodable
    )?}
)

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);