解决子类中“ fromJson”功能的最佳方法。 DART语言

时间:2019-05-07 06:29:27

标签: dart

我在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'];
   }
}

我的问题是在这种情况下如何避免代码复制?
请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以在基类上创建一个方法,该方法接受Map<String, dynamic>并填充其自身上的字段,然后从子类中调用该方法。但是,我确实建议使用json_serializable之类的代码来为您生成此代码。它增加了一个额外的步骤(您需要运行pub run build_runner buildpub run build_runner watch才能重新生成代码),但是避免了您必须手写所有这些步骤。