You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter解析接口JSON报错_InternalLinkedHashMap非Iterable类型修复求助

错误原因

_InternalLinkedHashMap<String, dynamic>是Dart中JSON对象对应的类型,本质是键值对结构,不属于可遍历的Iterable类型。你报错是因为API返回的JSON根结构是对象,不是数组,直接对jsonData做for-in遍历触发了类型不匹配。

修复步骤

  1. 先打印接口返回的原始数据确认结构:在jsonDecode后加一行print(response.body),找到用户数组对应的字段名,绝大多数后端接口会把列表数据放在data、results、list这类二级字段下。
  2. 调整代码先从根JSON对象中取出列表字段再遍历,以下是示例代码(假设用户数组存储在data字段中,可根据你实际的接口字段替换):
Future<List<User>>fetchData() async {
  var response = await http.get(
      Uri.parse(link),
      headers: headers);
  var jsonData = jsonDecode(response.body);

  List<User> users = [];
  // 从根Map中取出用户列表数组
  List userList = jsonData['data'] as List;
  for (var u in userList) {
    User user = User(u["name"], u["code"], u["id"]);
    users.add(user);
  }
  print(users.length);
  return users;
}

额外优化建议

可以提前加类型判断避免异常:

if (jsonData is Map<String, dynamic>) {
  if (jsonData['data'] is List) {
    List userList = jsonData['data'];
    for (var u in userList) {
      users.add(User(u["name"], u["code"], u["id"]));
    }
  }
}

如果接口返回的是单个用户对象而非列表,直接构造单个User后塞进List返回即可,无需遍历。

内容的提问来源于stack exchange,提问作者doğan kısa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:27:00