首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未处理的异常:类型'_InternalLinkedHashMap<String,dynamic>‘不是'HashMap<String,dynamic>’Dart的子类型

未处理的异常:类型'_InternalLinkedHashMap<String,dynamic>‘不是'HashMap<String,dynamic>’Dart的子类型
EN

Stack Overflow用户
提问于 2022-01-14 08:59:10
回答 2查看 77关注 0票数 0

我在下面有一个答复

代码语言:javascript
复制
[
    {
        "name": "Kamchatka",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "kamchatka@mail.com",
        "index": 1,
        "picture": "https://thispersondoesnotexist.com/"
    },
    {
        "name": "Valjakutse",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "valjakutse@mail.com",
        "index": 2,
        "picture": "https://thispersondoesnotexist.com/"
    },
    {
        "name": "Shipment",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "shipment@mail.com",
        "index": 3,
        "picture": "https://thispersondoesnotexist.com/"
    }
]

我有一个未来,它是异步的,应该获得响应并将其转换为如下所示的HashMap列表

代码语言:javascript
复制
  Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
    try {
      final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));

      late List<HashMap<String, dynamic>> responseList;

      responseList = List<HashMap<String, dynamic>>.from(json.decode(response.body));
    
      String stringList = jsonEncode(responseList);

      log("FetchUsersListHashMap $stringList");

      return responseList;

    } catch (e) {

      log("FetchUsersListHashMapException $e");

      rethrow;
    }
  }

当我调用_fetchUsersListHashMap时,我会出现以下错误

代码语言:javascript
复制
Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'HashMap<String, dynamic>'

我甚至尝试改变我分配给responseList的方式

代码语言:javascript
复制
responseList = json.decode(response.body);

但是它没有为HashMap列表分配来自url的响应。

下面是我是如何在java中实现的,只是我不能在颤振中复制相同的概念。

代码语言:javascript
复制
  List<HashMap<String, Object>> responseList = new Gson().fromJson(response,
                                new TypeToken<List<HashMap<String, Object>>>() {
                                }.getType());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-14 09:23:13

代码语言:javascript
复制
Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
 try {
  final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));

  final decoded = json.decode(response.body);

  final responseList = decoded
    .map<HashMap<String, dynamic>>((e) => HashMap<String, dynamic>.from(e))
    .toList();

  String stringList = jsonEncode(responseList);

  log("FetchUsersListHashMap $stringList");

  return responseList;
} catch (e) {
  log("FetchUsersListHashMapException $e");

  rethrow;
 }
}
票数 1
EN

Stack Overflow用户

发布于 2022-01-14 09:18:05

试试这个:

代码语言:javascript
复制
  List<HashMap<String, dynamic>> responseList = [];
  List jsonList = List.from(jsonDecode(response.body));
  jsonList.forEach((element) {
    responseList.add(HashMap.from(Map.from(element)));
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70708164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档