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

Flutter中如何解析GET请求返回的数组型API响应并为变量赋值

问题原因

你当前接口返回的JSON最外层是数组结构,json.decode()解析后返回的是List<dynamic>类型,你沿用之前直接转为Map的写法会触发类型转换异常,无法正常读取字段。

修复后代码

修改解析部分的逻辑,先拿到数组后取第一个元素再读取字段即可:

Future<Null> example(String? task_id) async {
  HttpClient client = HttpClient();
  client.badCertificateCallback =
      ((X509Certificate cert, String host, int port) => true);

  // 原代码url拼接存在语法错误,已修正为字符串插值写法
  final String url = "${urlVar}?id=$task_id";

  final request = await client
      .getUrl(Uri.parse(url))
      .timeout(const Duration(seconds: 5));

  HttpClientResponse response = await request.close();
  var responseBody = await response.transform(utf8.decoder).join();
  
  // 核心修改:先解析为List,再取第一个元素作为目标Map
  List jsonList = json.decode(responseBody);
  if (response.statusCode == 200 && jsonList.isNotEmpty) {
    Map jsonResponse = jsonList.first;
    global.taskId = jsonResponse['id'];
    global.taskName = jsonResponse['name'];
  }
}

补充注意事项

  • 增加了数组非空判断,避免接口返回空数组时触发下标越界异常
  • 如果需要更规范的类型安全,可以进一步把List强转为List<Map<String,dynamic>>类型,避免后续读取字段时的类型推导问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:04