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

Flutter报错:预期类型为'List<dynamic>',实际得到'_JsonMap'求解决

问题原因

你代码里直接把接口返回的JSON解析成List,但实际上后端接口返回的是一个JSON对象(_JsonMap),而非直接的数组,所以触发了类型不匹配错误。

解决步骤
  1. 先确认接口返回结构
    先打印response.body看看实际返回格式,通常后端会把数组包裹在某个字段里,比如:

    {
      "code": 200,
      "data": [
        {"id": 1, "nama": "Produk A"},
        {"id": 2, "nama": "Produk B"}
      ]
    }
    
  2. 修改代码适配返回结构
    先把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');
        }
      }
    }
    
  3. 额外注意
    确保你的listProduk类的fromJson方法能正确解析单个产品对象的字段,比如字段名要和接口返回的键名完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:00:08