我正在为我的请求使用 API。我将 API 的响应设为 JSON 但由于此错误,我无法 decode JSON 映射到 Map
_CastError(类型'String'不是类型转换中'Map<String,dynamic>'类型的子类型)
.这是我的 API 服务
Future<LoginResponseModel> login(LoginRequestModel requestModel) async {
String url = "myapi";
var headerss = {HttpHeaders.contentTypeHeader: 'application/json'};
final response =
await http.post(Uri.parse(url),
body: jsonEncode(requestModel.toJson()),
headers: headerss
);
if (response.statusCode == 200 || response.statusCode == 400) {
final Map<String, dynamic> test = jsonDecode(response.body) as Map<String, dynamic>;
return LoginResponseModel.fromJson(test);
}
else {
print(response.body);
throw Exception();
}
}
这是我的响应模型
class LoginResponseModel {
late final String token;
late final String error;
LoginResponseModel({
required this.token,
required this.error,
});
factory LoginResponseModel.fromJson(Map<String, dynamic> json) {
return LoginResponseModel(
token: json["token"] != null ? json["token"] : "",
error: json["error"] != null ? json["error"] : "");
}
}
我试过的是:
- 在返回内部解码
- 解码而不给出类型 Map<String,dynamic>
- 使用 jsonEncode 和 json.encode 进行解码
任何帮助都是极好的。
回答1
尝试这个...
LoginResponseModel loginResponseModel=LoginResponseModel.fromJson(jsonDecode(response.body));