Как декодировать этот json в базе данных Firebase realtime?

#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'»