我正在调用一个API,但是我一直试图正确地解析这个JSON响应,但是我没有能够解决这个问题。我调用API,并希望显示数据,但我得到的错误类型'List‘不是'List’或返回'null‘的子类型。我不知道我做错了什么。守则如下:
class Parking {
String name;
String adress;
String description;
int totalParkingLots;
int totalFreeParkingLots;
int latitude;
int longitude;
int parkingFees;
String companyId;
String status;
Parking(
{
this.name,
this.adress,
this.description,
this.totalParkingLots,
this.totalFreeParkingLots,
this.latitude,
this.longitude,
this.parkingFees,
this.companyId,
this.status,
});
Parking.fromJson(Map<String, dynamic> json) {
name = json['Name'];
adress = json['Adress'];
description = json['description'];
totalParkingLots = json['totalParkingLots'];
totalFreeParkingLots = json['totalFreeParkingLots'];
latitude = json['latitude'];
longitude = json['longitude'];
parkingFees = json['ParkingFees'];
companyId = json['companyId'];
status = json['Status'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Name'] = this.name;
data['Adress'] = this.adress;
data['description'] = this.description;
data['totalParkingLots'] = this.totalParkingLots;
data['totalFreeParkingLots'] = this.totalFreeParkingLots;
data['latitude'] = this.latitude;
data['longitude'] = this.longitude;
data['ParkingFees'] = this.parkingFees;
data['companyId'] = this.companyId;
data['Status'] = this.status;
return data;
}
} static Future<List<Parking>> getparkings() async {
List<Parking> _parkings = [];
try {
final uri = Uri.parse(ApiManager.parkingsAPIURL);
final headers = {'Content-Type': 'application/json'};
var response = await http.Client().get(
uri,
headers: headers,
);
int statusCode = response.statusCode;
print(statusCode);
var jsonResp = jsonDecode(response.body);
if (jsonResp != null) {
_parkings = jsonResp.map((item) => Parking.fromJson(item)).toList();
}
return _parkings;
} catch (e) {
print(e);
}
}我几乎可以肯定API调用和响应的问题,因为我没有正确地解析JSON数据,但可能是我错了,还有别的问题。
发布于 2022-04-29 09:03:34
它们是正确的,JSON响应没有什么问题,就像@mmcdon20提到的那样,由于某些原因,Flutter无法在map()函数中检测到正确的返回类型。但我猜这与jsonResp有关,因为它是dynamic类型,而dynamic实际上没有map()函数。
但是现在,要解决这个问题,只需将返回类型转换为map()函数,如下所示:
_parkings = jsonResp.map<Parking>((item) => Parking.fromJson(item)).toList();https://stackoverflow.com/questions/72051826
复制相似问题