Flutter报错:预期类型为'List<dynamic>',实际得到'_JsonMap'求解决
问题原因
你代码里直接把接口返回的JSON解析成List,但实际上后端接口返回的是一个JSON对象(_JsonMap),而非直接的数组,所以触发了类型不匹配错误。
解决步骤
先确认接口返回结构
先打印response.body看看实际返回格式,通常后端会把数组包裹在某个字段里,比如:{ "code": 200, "data": [ {"id": 1, "nama": "Produk A"}, {"id": 2, "nama": "Produk B"} ] }修改代码适配返回结构
先把JSON解析成Map,再从中取出数组部分进行转换:class ProdukAPI { Future<List<listProduk>> getProduk() async { final response = await http.get(Uri.parse('http://192.168.2.17:3000/produk/tampil')); if (response.statusCode == 200) { // 先解析为Map类型 Map<String, dynamic> jsonResponse = json.decode(response.body); // 取出数组字段(这里假设是"data",根据实际返回调整字段名) List dataList = jsonResponse['data']; return dataList.map((data) => listProduk.fromJson(data)).toList(); } else { throw Exception('Failed to load data'); } } }额外注意
确保你的listProduk类的fromJson方法能正确解析单个产品对象的字段,比如字段名要和接口返回的键名完全对应。
内容的提问来源于stack exchange,提问作者Lustlyy
相关产品推荐
相关产品推荐

