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

Flutter解析API数据时类型不匹配错误求助

错误原因分析:_JsonMap 不是 List 的子类型

核心原因:两个API返回的数据结构完全不同

  • https://jsonplaceholder.typicode.com/posts 返回的是直接的JSON数组(List),和你定义的List<dynamic>类型匹配,所以代码能正常运行
  • https://dummyjson.com/products 返回的是包含数组的JSON对象(Map),最外层是键值对结构,真正的产品列表数据在products这个key对应的数组里

代码中的两处问题

  1. 类型赋值不匹配:你把整个Map类型的接口返回值直接赋值给了List<dynamic>类型的_data,类型不兼容导致抛出类型转换错误
  2. 数据取值逻辑错误:就算拿到正确数据,你在ListTile里写的item['products']['title']也不符合数据结构——当_data是产品数组时,每个item就是单个产品对象,应该直接取item['title']

修正后的关键代码片段

Future<void> fetchData() async {
  final response = await http.get(Uri.parse('https://dummyjson.com/products'));
  if (response.statusCode == 200) {
    setState(() {
      // 提取products字段对应的数组赋值给_data
      _data = jsonDecode(response.body)['products'];
      print("JSON DATA : $_data");
    });
  } else {
    throw Exception('Failed to load data');
  }
}

// 对应的ListView itemBuilder部分
return ListTile(
  title: Text(item['title']),
  subtitle: Text(item['description']), // dummyjson产品接口无body字段,用description替代
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:31:22