如何解决List<dynamic> 不是 Map<String, dynamic> 类型的子类型
我是 Flutter 新手。我不明白为什么我有错误。我将我的响应从 json 转换为对象。为什么这个方法 getUser
返回 null?
Future<UserResponse> getUser(String apiToken,int id) async {
try {
Response response = await _dio.get(apiEndpoint + "users/",queryParameters: {
"id": id,},options: Options(
headers: {
"Authorization": apiToken
}),);
return UserResponse.fromJson(response.data);//'List<dynamic>' is not a subtype of type 'Map<String,dynamic>'
} catch (error,stacktrace) {
}
}
UserResponse.fromJson(Map<String,dynamic> json) {
id = json['id'];
name = json['name'];
surname = json['apiToken'];
response = json['response'];
}
解决方法
似乎您的 /users
端点返回用户对象列表,但 UserResponse.fromJson
期望他的输入是 Map<String,dynamic>
。
您可以尝试以下操作:
return response.data
.map<UserResponse>((el) => UserResponse.fromJson(el))
.toList();
但您似乎只期待一位用户,因为您在查询参数中提供了用户的 id
。您确定用户 ID 应该是查询参数吗?
您的代码解析为:
/users/?id=<id>
不会吧
/users/<id>
在这种情况下,您需要更改为:
Response response = await _dio.get(apiEndpoint + "users/$id",options: Options(
headers: {
"Authorization": apiToken
}),);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。