到 json 映射模型,其中包含子模型列表

To json mapping models with list of sub model inside

我是 flutter dev 的新手,正在尝试将模型转换为 json 字符串以传递给 api 调用。

当我尝试使用 RegistrationRequest.ToJson 函数时出现此错误

type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'

我假设它无法正确转换 userImages 列表并且不太确定如何转换。任何帮助将不胜感激

这里是我调用函数的地方

var serialisedBodycom = RegistrationRequest.toJson();
      var serialisedBody = jsonEncode(serialisedBodycom);

我有一个模型叫 注册请求

    import 'UserGender.dart';
import 'UserImage.dart';

class RegistrationRequest {
  String email;
  String password;
  String msisdn;
  UserGender gender;
  UserGender matchGender;
  List<UserImage> userImages;

  RegistrationRequest(
      {this.email,
      this.password,
      this.msisdn,
      this.gender,
      this.matchGender,
      this.userImages});
  RegistrationRequest.Empty();

  RegistrationRequest.fromJson(Map<String, dynamic> json)
      : email = json['email'],
        password = json['password'],
        msisdn = json['msisdn'],
        gender = json['gender'],
        matchGender = json['matchGender'],
        userImages = json['userImages'];

  Map<String, dynamic> toJson() {
    return {
      'email': email ?? '',
      'password': password ?? '',
      'MSISDN': msisdn ?? '',
      'Gender': gender ?? UserGender.Unknown,
      'MatchGender': matchGender ?? UserGender.Unknown,
      'UserImages': userImages ?? new List<UserImage>()
    };
  }
}

其中包含 UserImage

列表
    class UserImage {
  String base64;
  String fileName;
  bool isMainProfilePicture;
  String contentType;

  UserImage(
      this.base64, this.fileName, this.isMainProfilePicture, this.contentType);
  UserImage.Empty();
  UserImage.fromJson(Map<dynamic, dynamic> json)
      : base64 = json['base64'],
        fileName = json['fileName'],
        isMainProfilePicture = json['isMainProfilePicture'],
        contentType = json['contentType'];

  Map<dynamic, dynamic> toJson() => {
        'base64': base64,
        'fileName': fileName,
        'isMainProfilePicture': isMainProfilePicture,
        'contentType': contentType
      };
}

我得出的最终答案如下

RegistrationRequest.fromJson(Map<String, dynamic> json) => RegistrationRequest(
        email: json["email"],
        password: json["password"],
        msisdn: json["msisdn"],
        gender: json["gender"],
        matchGender: json["matchGender"],
        userImages: List<UserImage>.from(json["userImages"].map((x) => UserImage.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "email": email,
        "password": password,
        "msisdn": msisdn,
        "gender": gender,
        "matchGender": matchGender,
        "userImages": List<dynamic>.from(userImages.map((x) => x.toJson())),