【问题标题】:Flutter Error: List<dynamic> is not a subtype of type Map<String, dynamic>Flutter 错误:List<dynamic> 不是 Map<String, dynamic> 类型的子类型
【发布时间】:2021-04-06 05:08:10
【问题描述】:

我目前正在构建一个应用程序来通过医疗 api 读取数据,并且我正在尝试解析 JSON。

我为用户做了一个模型类:

class UserModel {
  String id;
  String nome;
  MedicoModel medico;
  MedicosModel medicos;
  String token;

  String error;

  UserModel(
      {this.id, this.nome, this.token, this.medico, this.medicos, this.error});

  UserModel.fromJson(Map<String, dynamic> json)
      : id = json['login'],
        nome = json['nome'],
        token = json['token'],
        medico = MedicoModel.fromJson(json['medico']),
        medicos = MedicosModel.fromJson(json['medicos']),
        error = '';

  Map<String, dynamic> toJson() => {
        'id': id,
        'nome': nome,
        'token': token,
        'medico': medico.toJson(),
        'medicos': medicos.toJson(),
      };

  UserModel.withError(String errorValue)
      : id = null,
        nome = null,
        token = null,
        medico = null,
        medicos = null,
        error = errorValue;
}

class MedicoModel {
  String crm;
  String nome;

  MedicoModel({this.crm, this.nome});

  MedicoModel.fromJson(Map<String, dynamic> json)
      : crm = json['crm'],
        nome = json['nome'];

  Map<String, dynamic> toJson() => {
        'crm': crm,
        'nome': nome,
      };
}

class MedicosModel {
  List<MedicoModel> medicos;

  MedicosModel({this.medicos});

  MedicosModel.fromJson(Map<String, dynamic> json)
      : medicos = (json['medicos'] as List)
            .map((e) => MedicoModel.fromJson(e))
            .toList();

  Map<String, dynamic> toJson() => {
        'medicos': medicos,
      };
}

这是我要读取的 JSON 信息:

{
  "login": "12345",
  "medico": {
    "crm": "12345",
    "nome": "XXX"
  },
  "medicos": [
    {
      "crm": "12345",
      "nome": "XXX"
    }
  ],
  "token": "5ad0c78d8fc1233b48526e0893cf91c912345706",
  "nome": "XXX"
}

但我收到错误消息“列表不是 Map 类型的子类型”。 我正在尝试了解如何阅读 json,所以这对我来说是新的。

我该如何解决这个错误?

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:

    请看一下这段代码,你需要这样修改你的代码:

     MedicosModel.fromJson(List<dynamic> jsonList)
          : medicos = jsonList['medicos']
                .map((e) => MedicoModel.fromJson(e))
                .toList();
    

    【讨论】:

    • 当我使用你的代码时,它说'参数类型'String'不能分配给参数类型'int'。',但我没有任何int变量。
    • 您的数据可能不准确。我用我建议的一段代码尝试了你的代码并且它工作正常。
    猜你喜欢
    • 2021-09-08
    • 2022-11-02
    • 2023-01-07
    • 2021-06-09
    • 2019-01-22
    • 2021-07-01
    • 2021-04-13
    • 2019-08-18
    相关资源
    最近更新 更多