#firebase #flutter #firebase-realtime-database
#firebase #flutter #firebase-realtime-database
Вопрос:
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) как список<динамический>;
Но я получил ошибку, подобную этой
Необработанное исключение: тип ‘List’ не является подтипом типа ‘String’
Как я могу декодировать JSON?
Комментарии:
1. Не могли бы вы, пожалуйста, опубликовать желаемый результат?
2. @ 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}
Комментарии:
1. все еще я сталкиваюсь с этой ошибкой » [ОШИБКА: flutter / lib / ui / ui_dart_state.cc(157)] Необработанное исключение: тип ‘List<dynamic>’ не является подтипом типа ‘String'»