当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Dart jsonEncode用法及代码示例

dart:convert 库中jsonEncode 函数的用法介绍如下。

用法:

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

object 转换为 JSON 字符串。

如果 value 包含不能直接编码为 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}}
}

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 jsonEncode function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。