Dart / Flutter:在基础对象中使用fromJson将json映射到具有基础类的对象

时间:2020-10-14 10:20:30

标签: flutter dart fromjson

我有两个类:BaseClass(BaseResponse)和DerivedClass(LoginResponse)。我正在使用fromJson方法反序列化它们。

我想了解如何为基类调用fromJson方法。

class BaseResponse { 
  int responseCode;
  String responseMessage;

  BaseResponse.fromJson(Map<String, dynamic> input)
      : responseCode = input["ResponseCode"],        
        responseMessage = input["ResponseMessage"];
}
class LoginResponse extends BaseResponse {
    String authenticationToken;
    
    LoginResponse.fromJson(Map<String, dynamic> input) 
      : authenticationToken = input["AuthenticationToken"];

}

LoginResponse.fromJson(Map<String, dynamic> input) 给我一个错误,说:类'BaseResponse'没有未命名的构造函数。

感谢您的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

除非您出于某种原因绝对需要它,否则我不会为BaseResponse创建.fromJson。

我认为更好的方法是在基类中声明最终变量并在其中声明表达式,并且仅在派生类中实现模型或任何种类:

class BaseResponse { 
  final int responseCode;
  final String responseMessage;

  BaseResponse({@required this.responseCode, @required this.responseMessage)
  : assert(<expression>);
}

class LoginResponse extends BaseResponse {
  final String authenticationToken;
  final int code;
  final String message;
   
  LoginResponse({
    this.authenticationToken,
    this.code,
    this.message,
  }) : super(code: code, message: message)

  LoginResponse.fromJson(Map<String, dynamic> input) {
    return LoginResponse(
    authenticationToken: input['token'],
    code: input['code'],
    message: input['message'],
    );
  }

}