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

Flutter从服务器获取数据时类型转换错误求助

解决方案

错误原因

Dio 框架默认会自动将服务器返回的 JSON 响应解析为 Map<String, dynamic> 或 List<dynamic> 类型,你不需要对已经解析好的数据再次调用 jsonDecode。之前的错误是因为你把已经是 Map/List 的数据当成字符串去解码,导致类型不匹配。

修正后的代码

将获取数据的代码修改为:

Future<List<AchievementResponse>?> getInfo() async {
  // ... 省略 Dio 请求代码
  if (response is dio.Response) {
    final data = response.data;
    print(data['achievementsProgress']);
    // 直接遍历已解析的列表,不需要 jsonDecode
    return (data['achievementsProgress'] as List<dynamic>)
        .map((item) => AchievementResponse.fromJson(item as Map<String, dynamic>))
        .toList();
  }
  return null;
}

额外验证步骤

可以先打印 data['achievementsProgress'] 的运行时类型,确认它的结构:

print(data['achievementsProgress'].runtimeType);

如果输出是 List<Map<String, dynamic>>,就说明上述修正完全适用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:32:33