我有一堂这样的课:
class UserModel {
String id = '';
String firstName = '';
String lastName = '';
String email = '';
String phoneNumber = '';
String? createdDate = '';
String? membershipType = '';
UserModel({
required this.id,
required this.firstName,
required this.lastName,
required this.email,
required this.phoneNumber,
required this.createdDate,
required this.membershipType
});
UserModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
firstName = json['firstName'];
lastName = json['lastName'];
email = json['email'];
phoneNumber = json['phoneNumber'];
createdDate = json['createdDate'];
membershipType = json['membershipType'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['firstName'] = firstName;
data['lastName'] = lastName;
data['email'] = email;
data['phoneNumber'] = phoneNumber;
data['createdDate'] = createdDate;
data['membershipType'] = membershipType;
return data;
}
}
我想避免使用
dynamic
类型,并且我想干净地处理格式错误的 JSON 可能发生的错误。我还想避免代码生成,因为它会弄乱我的构建管道并给我的项目带来大量开销。
是否有一个库使用泛型或其他功能来提供更好的开发人员体验?有没有更好的方法可以手动实现JSON序列化而不需要
dynamic
?
不幸的是,目前不可能,除非使用代码生成器或手动。有一个名为 Dart 宏的实验性提案:
“Dart 宏系统是目前正在开发的一项主要新语言功能,它为 Dart 语言添加了对静态元编程的支持。
Dart 宏是一段用户可定义的代码,它接受其他代码作为参数并对其进行实时操作以创建、修改或添加声明。”
在文档中,您可以看到如何安装和测试它,第一个用例的示例就是这种情况。使用
JsonCodable
注释可以让您的类自动生成 fromJson
和 toJson
方法。
更多信息请访问:Dart 宏文档