我在dart子类中的JSON转换有问题。例如:
class Person {
String firstName;
String lastName;
Person({
this.firstName,
this.lastName
})
factory Person.fromJson(Map<String, dynamic> json){
return Person()
..firstName = json['firstName']
..lastName = json['firstName'];
}
}
class User extends Person {
String token;
User({
this.token
});
factory User.fromJson(Map<String, dynamic> json){
return User()
..token = json['token']
// The problem is here. I need dublicate code to fill parent
// class properties as first & last name of person:
..firstName = json['firstName']
..lastName = json['firstName'];
}
}
我的问题是在这种情况下如何避免代码复制?
请帮忙。
答案 0 :(得分:0)
您可以在基类上创建一个方法,该方法接受Map<String, dynamic>
并填充其自身上的字段,然后从子类中调用该方法。但是,我确实建议使用json_serializable之类的代码来为您生成此代码。它增加了一个额外的步骤(您需要运行pub run build_runner build
或pub run build_runner watch
才能重新生成代码),但是避免了您必须手写所有这些步骤。