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

Flutter中用Http/Dio获取API的results字段,跳过info字段

解决Rick and Morty API获取results字段的Dio问题
  • 直接提取results字段
    这个API返回的是包含info和results的JSON对象,请求成功后直接从响应数据里取response.data['results']就能跳过info字段,不用额外处理它。

  • 数据模型适配
    如果你已经写了单个Character的数据模型,不用额外创建包含info的根模型,直接把results数组解析成Character列表即可:

    // 假设你的Character模型已实现fromJson方法
    List<Character> characters = List<Character>.from(
      response.data['results'].map((item) => Character.fromJson(item))
    );
    
  • 修复Dio错误
    你当前的错误提示太笼统,先把错误捕获逻辑改得具体些,方便定位问题:

    try {
      final response = await Dio().get('https://rickandmortyapi.com/api/character');
      // 提取并解析results数据
      final List<dynamic> resultsData = response.data['results'];
      List<Character> characters = resultsData.map((json) => Character.fromJson(json)).toList();
      // 后续处理拿到的characters数据
    } catch (e) {
      print('具体错误:$e'); // 替换原错误提示,能明确是网络问题还是模型解析问题
    }
    

    常见错误原因:

    • 数据模型字段与API返回不匹配(比如字段名大小写错误,API返回name你写成Name)
    • 未正确处理异步逻辑(比如在UI函数直接使用await,需包裹在async函数或用FutureBuilder)
    • 网络权限未配置(Android需在AndroidManifest.xml添加<uses-permission android:name="android.permission.INTERNET"/>)
  • 简化版请求代码
    若仅需results字段,可直接写异步函数返回Character列表:

    Future<List<Character>> getCharacters() async {
      final dio = Dio();
      try {
        final res = await dio.get('https://rickandmortyapi.com/api/character');
        return (res.data['results'] as List).map((c) => Character.fromJson(c)).toList();
      } catch (e) {
        throw '获取角色数据失败:$e';
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:21:08