如何在 Firebase 实时数据库中解码这个 json?
Posted
技术标签:
【中文标题】如何在 Firebase 实时数据库中解码这个 json?【英文标题】:How to decode this json in Firebase realtime Database? 【发布时间】:2020-12-09 02:54:37 【问题描述】:void readData()
databaseReference
.child("data")
.child("chapters")
.once()
.then((DataSnapshot snapshot)
print('Data : $snapshot.value');
);
这是我的读取数据函数,我得到了以下 JSON 输出。
[
"name": "Global Village",
"videolists": [
"title": "Binary to decimal",
"link": "http://..........",
"duration": "5:3"
,
"title": "Binary to decimal",
"link": "http://..........",
"duration": "5:3"
]
,
"name": "Data Communication and Networking",
"videolists": [
"title": "Binary to decimal",
"link": "http://..........",
"duration": "5:3"
,
"title": "Binary to decimal",
"link": "http://..........",
"duration": "5:3"
]
]
我已尝试使用此代码对 JSON 进行解码
var lists= json.decode(snapshot.value) as List
但我遇到了这样的错误
未处理的异常:类型“列表”不是类型的子类型 '字符串'
如何解码 JSON?
【问题讨论】:
能否发布您想要的输出? @ Squ1rr3lz 我只想将 json 解码值作为列表存储在一个变量中。稍后我将使用它作为函数参数。 【参考方案1】:您可以尝试以下方法:
Iterable lists = json.decode(result);
List<dynamic> map = lists.toList();
map.forEach((res)
print(res["videolists"][0]);
);
json.decode()
接受String
并返回dynamic
,因此我们可以将其分配给Iterable
类,然后我们可以使用toList()
创建一个列表并使用forEach()
进行迭代。以上应该给你:
title: Binary to decimal, link: http://.........., duration: 5:3
title: Binary to decimal, link: http://.........., duration: 5:3
【讨论】:
我仍然面临这个错误“ [错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:类型 'List以上是关于如何在 Firebase 实时数据库中解码这个 json?的主要内容,如果未能解决你的问题,请参考以下文章