在一个 App 中,数据类是必不可少。github
咱们须要从接口请求数据(一般为 JSON 格式),而后解析成对象,再使用它。json
看看在 Flutter 中如何定义可解析的数据类。bash
1.定义数据类函数
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() =>
{
'name': name,
'email': email,
};
}
复制代码
其中,你必须实现 fromJson(Map<String, dynamic> json)
和 toJson()
两个函数。post
在进行数据转换时会用到它们。this
2.JsonString To Objectspa
// 解析Json
var userMap = jsonDecode(data);
var user = User.fromMap(userMap);
复制代码
在调用数据类的 fromMap()
函数前,须要先调用 jsonDecode()
将 JsonString 转换为一个 Map。插件
jsonDecode()
是 dart:convert
中的一个函数,所以咱们须要导入 dart:convert
。3d
3.Object To JsonString
// 对象转Json
var userJson = jsonEncode(user);
复制代码
使用 dart:convert
中的 jsonEncode()
就能够将一个对象转换为 JsonString,它会调用数据类的 toJson()
。
4.辅助插件
从上面的例子能够看出,要定义一个复杂的数据类仍是很花费精力的。
幸运的是,有人制做了插件帮助咱们自动的去完成这件事。
你能够在 AndroidStudio 的 Plugin 管理器中下在这个插件。
它的名字叫:dart_json_format。
下载好插件后,重启 AndroidStudio。
而后经过 command + N (或者编辑框内右键选择 Generate) 唤出以下弹窗,选择 dart json format
。
接着会出现以下弹窗,将你的 json 数据字符串粘贴,点击肯定。
很好,数据类已经生成了!
比起官方提供的 复杂方法 ,这真是太简单了!