Flutter解析API数据时类型不匹配错误求助
错误原因分析:_JsonMap 不是 List 的子类型
核心原因:两个API返回的数据结构完全不同
https://jsonplaceholder.typicode.com/posts返回的是直接的JSON数组(List),和你定义的List<dynamic>类型匹配,所以代码能正常运行https://dummyjson.com/products返回的是包含数组的JSON对象(Map),最外层是键值对结构,真正的产品列表数据在products这个key对应的数组里
代码中的两处问题
- 类型赋值不匹配:你把整个Map类型的接口返回值直接赋值给了
List<dynamic>类型的_data,类型不兼容导致抛出类型转换错误 - 数据取值逻辑错误:就算拿到正确数据,你在
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
相关产品推荐
相关产品推荐

