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

Flutter中从API获取JSON填充LapsUser列表报错求助

Flutter从REST API获取JSON填充LapsUser列表类型错误解决方法

你遇到的Map<String, dynamic>无法赋值给LapsUser类型的错误,核心原因是没有将API返回的JSON数据转换成自定义的LapsUser对象,直接把Map类型数据塞进了需要LapsUser类型的列表中。按以下步骤修复:

1. 给LapsUser类添加JSON转对象的构造函数

在sql_laps_user_class.dart中,为LapsUser类实现fromJson工厂构造函数,负责把API返回的Map数据转换成LapsUser实例:

class LapsUser {
  final int id;
  final String username;
  // 根据你的业务需求定义其他字段

  LapsUser({required this.id, required this.username});

  // 核心:从JSON Map转换为LapsUser对象
  factory LapsUser.fromJson(Map<String, dynamic> json) {
    return LapsUser(
      id: json['id'], // 注意这里的键名要和API返回的JSON字段完全一致
      username: json['username'],
      // 其他字段同理,一一对应API返回的键名
    );
  }
}

2. 修改API请求后的解析逻辑

把原本直接添加Map的代码,改成通过fromJson转换后再添加到列表:

// 错误写法(导致类型不匹配)
// users.add(item);

// 正确写法
List<LapsUser> lapsUsers = [];
final response = await http.get(Uri.parse('你的云端API地址'));

if (response.statusCode == 200) {
  List<dynamic> jsonList = jsonDecode(response.body);
  for (var jsonItem in jsonList) {
    // 将每个Map<String, dynamic>转换为LapsUser对象再加入列表
    lapsUsers.add(LapsUser.fromJson(jsonItem));
  }
}

3. 检查字段匹配与空值处理

  • 确认fromJson里的键名和API返回的JSON字段完全一致,比如API返回user_name就不能写json['username'],否则会出现空值或转换错误。
  • 如果API返回的字段可能为空,要添加空值兜底,比如username: json['username'] ?? '未知用户',或者将类属性设为可空类型String? username。

内容的提问来源于stack exchange,提问作者Massimiliano Longo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:10:04