【Flutter】序列化方案之命令行生成model
在Flutter项目中,我们通常需要根据API的返回数据定义相应的Model类。这些类通常需要序列化和反序列化JSON数据。在Flutter中,我们可以使用json\_serializable包来生成序列化代码。
以下是一个简单的例子,展示如何使用json\_serializable包来生成model类:
首先,在pubspec.yaml文件中添加依赖:
dependencies:
json_annotation: ^4.5.0
dev_dependencies:
build_runner: ^2.1.7
json_serializable: ^6.1.0
然后,运行以下命令来安装依赖:
flutter pub get
定义一个User模型类,并使用json\_serializable生成序列化代码:
// user.dart
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
String name;
int age;
User(this.name, this.age);
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
现在,运行build\_runner来生成序列化代码:
flutter pub run build_runner build
这将生成一个user.g.dart文件,包含序列化和反序列化函数的实现。
使用User模型进行序列化和反序列化的例子:
void main() {
// 序列化
var user = User('John Doe', 30);
var json = user.toJson();
print(json); // 输出:{"name":"John Doe","age":30}
// 反序列化
var jsonString = '{"name":"Jane Doe","age":25}';
var userFromJson = User.fromJson(jsonDecode(jsonString));
print(userFromJson.name); // 输出:Jane Doe
}
以上代码展示了如何定义一个简单的User模型类,并使用json\_serializable来生成序列化和反序列化的代码。然后,演示了如何使用这些生成的函数来序列化和反序列化User对象。
评论已关闭