You need to enable JavaScript to run this app. Flutter使用json_table解析REST API数据时出现List类型转换报错
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用json_table解析REST API数据时出现List类型转换报错

报错成因
  • 接口返回的根级JSON为包含budgets字段的对象,并非直接返回预算列表数组,若直接将jsonDecode的整体结果强转为List,首先会出现结构不匹配问题
  • jsonDecode默认解析得到的列表元素为dynamic类型,无法通过整体强转直接转换为List<Map<String, dynamic>>,这是触发类型转换报错的直接原因
修复步骤
  1. 先将接口响应体的JSON内容解析为根级Map<String, dynamic>对象
  2. 从根Map中提取budgets字段对应的原始列表(该列表类型为List<dynamic>)
  3. 对原始列表逐元素完成类型转换,将每个元素强制转为Map<String, dynamic>,得到符合JsonTable组件入参要求的列表

核心修正代码:

if (response.statusCode == 200) {
  // 解析根级JSON对象
  final rootJson = jsonDecode(response.body) as Map<String, dynamic>;
  // 提取budgets列表并逐元素完成类型转换
  final tableData = (rootJson['budgets'] as List<dynamic>)
      .map((item) => item as Map<String, dynamic>)
      .toList();
  setState(() {
    _data = tableData;
  });
}
关键注意点
  • 不能直接对List<dynamic>类型的原始列表做整体类型强转,Dart的强类型校验不会自动遍历列表元素完成子类型匹配,必须通过映射操作逐元素完成类型cast
  • 需保证budgets列表中的每个元素都是键值对结构,否则传入JsonTable后依然会触发渲染异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 13:24:04