首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >把Map<String,dynamic>从Map<dynamic,dynamic>颤振

把Map<String,dynamic>从Map<dynamic,dynamic>颤振
EN

Stack Overflow用户
提问于 2021-07-16 17:19:10
回答 4查看 16.6K关注 0票数 4

我的代码如下:

代码语言:javascript
运行
复制
 Map<dynamic, dynamic> result = snapshot.value;
 Map<String, dynamic> data = Map<String, dynamic>();
 for (dynamic type in result.keys) {
    data[type.toString()] = result[type];
 }
 print(data);
 print(data.runtimeType);

但是数据类型是_InternalLinkedHashMap<String, dynamic>,我无法读取它的值,尽管我上面做了一些丑陋的攻击。

直接强制转换也不起作用:snapshot.value as Map<String, dynamic>抛出错误:'_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>'

我需要一个Map类型来创建我的自定义类对象。

snapshot.value有一种动态类型,但它是一个json对象,它返回实时数据库查询的结果,并且没有关于如何将值检索到颤振对象的文档。

我尝试过这个回答,但是我不能使用它,因为jsonDecode()接受一个字符串作为参数。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-02-23 00:24:39

当我尝试汤姆的回答时,我得到了:

参数类型为“Object?”不能分配参数类型'Map‘

为了解决这个问题,我不得不:

代码语言:javascript
运行
复制
Map<String, dynamic>.from(snapshot.value as Map);

实际上,由于我的数据库节点中的所有值都是布尔值,所以我能够这样做:

代码语言:javascript
运行
复制
Map<String, bool>.from(snapshot.value as Map);
票数 5
EN

Stack Overflow用户

发布于 2021-07-24 09:14:12

最近的这个Firecast视频在27分钟就解决了我的问题。

对于数据模型对象中的另一个嵌套HashMap,我还出现了一个非显式颤振错误,无法直接转换。

解决方案是对数据模型对象中的每个嵌套Map使用Map<String, dynamic>.from(snapshot.value)

编辑:firebase_database包的最新版本请参见下面的回答--这是正确的答案。

票数 4
EN

Stack Overflow用户

发布于 2021-07-16 17:30:00

我使用DartPad测试了您的代码:

代码语言:javascript
运行
复制
void main() {
  //Custom json
  Map<dynamic, dynamic> json = {
    "window": {
      "title": "Sample Konfabulator Widget",
      "name": "main_window",
      "width": 500,
      "height": 500
    }
  };

  Map<dynamic, dynamic> result = json;
  Map<String, dynamic> data = Map<String, dynamic>();
  for (dynamic type in result.keys) {
    data[type.toString()] = result[type];
  }
  print(data);
  print(data['window']);
  print(data['window']['title']);
}

打印1:

{窗口:{标题:示例Konfabulator,名称: main_window,宽度: 500,高度:500}

打印2:

{标题:示例Konfabulator,名称: main_window,宽度: 500,高度: 500}

打印3:

样例Konfabulator

我不明白这个问题

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68412968

复制
相关文章

相似问题

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