未处理的异常:类型 'List<dynamic>' 不是颤振中类型 'Map<dynamic, dynamic>' 的子类型

Posted

技术标签:

【中文标题】未处理的异常:类型 \'List<dynamic>\' 不是颤振中类型 \'Map<dynamic, dynamic>\' 的子类型【英文标题】:Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<dynamic, dynamic>' in flutter未处理的异常:类型 'List<dynamic>' 不是颤振中类型 'Map<dynamic, dynamic>' 的子类型 【发布时间】:2020-05-24 12:59:29 【问题描述】:

我刚接触flutter,正在尝试创建我的第一个从 API 获取一些数据的应用程序。 以下是 API 结果主体的样子:

[
    
        "id": 1,
        "user": 
            "username": "admin@admin.com"
        ,
        "name": "Ahmed Wagdi qwqw",
        "username": "admin",
        "password": "******",
        "location": 
            "user": 
                "username": "admin@admin.com"
            ,
            "name": "Ahmed Wagdi",
            "phone": "01207199086",
            "latitude": "31.078221",
            "longitude": "29.734717"
        ,
        "type": "Manager",
        "direct_manager": "http://g-attend.com:8000/api/panel/api/employees/1/",
        "on_duty": true
    
]

这就是我如何尝试在颤振中调用和解析它:


import 'package:http/http.dart';
import 'dart:convert';


void gettingEmployees() async
    String url = 'http://my_url.com';
    Response response = await get(url, headers: "Authorization":"My basic auth");
    Map data = jsonDecode(response.body);
    print(data);
  

最后,我得到了这个错误:

Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<dynamic, dynamic>' in flutter

【问题讨论】:

您在响应中的第一个字节是 [ 所以这是 List 而不是 Map - List data = ... 【参考方案1】:

改变这个:

    Map data = jsonDecode(response.body);

进入这个:

    List<dynamic> data = jsonDecode(response.body);

【讨论】:

以上是关于未处理的异常:类型 'List<dynamic>' 不是颤振中类型 'Map<dynamic, dynamic>' 的子类型的主要内容,如果未能解决你的问题,请参考以下文章

未处理的异常:类型“List<dynamic>”不是“List<CustomerTransactionDetail>”类型的子类型

未处理的异常:类型 'List<dynamic>' 不是类型 'Map<String, dynamic>' 的子类型

未处理的异常:类型'List<dynamic>'不是'String'类型的子类型无法获取json数据[重复]

未处理的异常:类型 'List<dynamic>' 不是颤振中类型 'Map<dynamic, dynamic>' 的子类型

未处理的异常:类型“List<dynamic>”不是“List<Map<String, double>>”类型的子类型

未处理的异常:类型“int”不是类型转换中“List<int>”类型的子类型