当前位置: 首页 > 知识库问答 >
问题:

颤振:列表不是Map

秦权
2023-03-14

我有以下型号

class ModelCompanies {
  int id;
  String companyid;
  String companyName;
  String name;
  String activeStatus;

  ModelCompanies(
      {this.id, this.companyid, this.companyName, this.name, this.activeStatus});

  ModelCompanies.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    companyid = json['companyid'];
    companyName = json['companyName'];
    name = json['name'];
    activeStatus = json['activeStatus'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['companyid'] = this.companyid;
    data['companyName'] = this.companyName;
    data['name'] = this.name;
    data['activeStatus'] = this.activeStatus;
    return data;
  }
}

我有下面的方法

Future<ModelCompanies> fetchCompanies() async {
    //encode Map to JSON

    final response = await _dio.get(
        globals.apiUrl + "get-companies",
        options: buildCacheOptions(Duration(hours: _cachePriorityDurationHours),
            forceRefresh: true,
            maxStale: Duration(days: _networkPriorityDurationDays)));

    if (response.statusCode == 200) {
      return ModelCompanies.fromJson(response.data);
    } else {
      throw new Exception("Failed to load post.");
    }
  }

API中的JSON格式。

[
   {
      "id":123,
      "companyid":"XYZ-123",
      "companyName":"XYZ Corporation",
      "name":"(XYZ) XYZ Corporation",
      "activeStatus":"A"
   },
   {
      "id":248,
      "companyid":"PQR-248",
      "companyName":"PQR Holdings Limited",
      "name":"(PQR) PQR Holdings Limited",
      "activeStatus":"A"
   },
   {
      "id":397,
      "companyid":"MNO-397",
      "companyName":"MNO Adventures",
      "name":"(MNO) Adventures",
      "activeStatus":"A"
   }
]

返回模型公司时出现问题。fromJson(response.data) fetchcompanys中的code>给出错误列表

我在SO中寻找类似问题的其他解决方案,但无法使它们工作(因为我对颤动和飞镖相当陌生)。

我试过的是

 Map<String, dynamic> jsonResponse = response.data.map((item) {
        return {
          "id": item["id"],
          "companyid": item["companyid"],
          "companyName": item["companyName"],
          "name": item["name"],
          "activeStatus": item["activeStatus"]
        };
      }).toList(); 

      return ModelCompanies.fromJson(jsonResponse );

但这也犯了同样的错误。


共有1个答案

顾烨磊
2023-03-14

响应。数据包含一个JSON字符串,其中包含对象的列表,因此我们应该替换以下行:

if (response.statusCode == 200) {
 return ModelCompanies.fromJson(response.data);
}

到:

if (response.statusCode == 200) {
 List<ModelCompanies> modelCompanies = 
    List<ModelCompanies>.from(
       response.data.map((model)=> ModelCompanies.fromJson(model)
      ) 
    );
}
 类似资料:
  • 如果有人知道如何修复这个错误,我会非常感激!我只是想使用API访问网站,saleTitle和saleCode然后显示它。所有的代码都在下面,希望这只是一个我忽略的简单修复 任何想要查看数据结构的人都可以使用API 或者这里的Json数据 模型 屏幕文件

  • 我是颤振开发方面的新手。我犯了一个错误 列表不是“Iterable”类型的子类型 到目前为止,我已经做到了。 模范班 缅因州班内 } 我试图从2天开始解决这个问题。 请帮忙,谢谢。 这里是JSON响应,您可以检查链接

  • 我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型

  • 我目前正在构建一个应用程序,通过医疗api读取数据,我试图解析JSON。 我为用户创建了一个模型类: 这是我试图阅读的JSON信息: 但是我得到的错误列表不是Map类型的子类型 如何修复此错误?

  • 我正在尝试使用StreamProvider使firestore文档流中的数据在我的应用程序中可用。这是一个食谱应用程序,这是购物清单。 我有一个模型RecipeItem,其中包含关于食谱中项目的详细信息。这个文件保存一个数组,称为列表,包含列表中每个项目的映射。 下面是我与firestore的连接并设置流。我尝试获取文档,然后使用用户映射为列表中的每个项目创建RecipeItem实例。方法如下:

  • 我有一个FutureBuilder(很高兴加载)从Firebase获取我的DocumentSnapshot列表,但问题是如果我推送/弹出屏幕,它会一遍又一遍地重建它。为了解决这个问题,我最终将它放在了上,但我有一个问题,我有时无法从中获取所有文档。 我有一个按钮可以启用国家/地区筛选和禁用,每次按下它几乎都会立即显示我的文档,例如,我总共筛选了11个国家/地区,筛选了5个国家/地区,但有时我不会全