【发布时间】:2021-04-11 05:37:50
【问题描述】:
我有关注Model
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"
}
]
问题
方法fetchCompanies 中的return ModelCompanies.fromJson(response.data); 行给出错误
List<dynamic> is not a subtype of type Map<String, dynamic>
我在 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 );
但这也会引发同样的错误。
【问题讨论】: