Dart:从 Firebase 快照中解码 Json

Posted

技术标签:

【中文标题】Dart:从 Firebase 快照中解码 Json【英文标题】:Dart: decode Json from a Firebase snapshot 【发布时间】:2019-05-19 04:29:47 【问题描述】:

这可能是一个微不足道的问题,我尝试从 Firebase 快照中解码 json,这是 json 的结构:

firebaseKey1 : img1:value1

firebaseKey2 : img2:value2

firebaseKey3 : img3:value3

这是我尝试过的:

 DatabaseReference firebaseRef = FirebaseDatabase.instance.reference();
 firebaseRef.child('...').once().then((DataSnapshot snapshot) 
      Map<dynamic,dynamic> map = snapshot.value;
      map.forEach((key, jsonString) 
            print('$key: $jsonString'); // jsonString = img1:value1

            //how to get value1 inside jsonString?
     );
 );

有什么想法吗?

【问题讨论】:

我认为你不需要解码。它应该返回已经解码的值。 @GünterZöchbauer 对***.com/questions/53886373/… 有任何想法吗?我真的被困住了.. :( 【参考方案1】:

也许 OP 正在寻找的是:

var parsedJSON  = snapshot.value;
print('img1 : ' + parsedJSON['img1']);

【讨论】:

【参考方案2】:

您不需要json.decode。返回值已经解码。

key1:value1

的结果
final Map<String,dynamic> value = 'key1': 'value1';
print(value.toString());

【讨论】:

嘿,君特。从日志输出看来,Julien 可能有一个嵌套对象。 jsonString.forEach() 在这种情况下会起作用吗? 一开始我也是这么想的,但它是无效的JSON,因为它缺少引号,但它与Darts Map.toString()的输出匹配。 我用整个json结构编辑了问题,确实如何在jsonString中获取“值”?需要另一个 Map? 看起来还是不像 JSON。 "img1":"value1" 将是有效的 JSON 这个问题到底是什么?您收到错误消息吗?

以上是关于Dart:从 Firebase 快照中解码 Json的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 因无效安全(DART/FLUTTER)而无法工作

如何使用 Flutter/Dart 检查 Firebase 数据库中是不是存在节点

Flutter:StreamBuilder 快照——无数据

从 Firebase 数据库快照解析布尔值

在 Dart 中解码 HTML 编码的文本

如何从 Firebase 数据快照中获取密钥?