'Ожидалось значение типа List<dynamic>, а получено одно типа _JsonMap'

Приведенный ниже код отображает мой метод приведения List<dynamic>, но когда я просматриваю свой код, отображается информация: "Ожидалось значение типа List<dynamic>, а получено одно типа _JsonMap".

Мои данные извлекаются из django rest framework в формат json. Я запускаю сервер каждый раз, когда запускаю приложение flutter.

Я бы сказал, что ваш json-ответ - это объект, содержащий список (который вы хотите разобрать), а не непосредственно список. Если вы покажете свой json-ответ, будет легче понять

Итак, в основном следующая строка вызывает эту проблему:

List jsonResponse = (json.decode(response.body) as List<dynamic>);

Почему?

Список response.body не является списком в кодировке JSON, вместо этого он представляет собой карту в кодировке JSON.

Решение

Исходя из кода, я думаю, что вы хотите извлечь список результатов из ответа. Пожалуйста, попробуйте следующий код для этого:

Future<List<Data>> fetchData() async {
  var url = Uri.parse('http://127.0.0.1:8000/api/?format=json');
  final response = await http.get(url);
  if (response.statusCode == 200) {

      final jsonResponse = json.decode(response.body);
    return jsonResponse["results"]!.map((data) => Data.fromJson(data)).toList();
  } else {
    throw Exception('Unexpected error occured!');
  }
}

Вернуться на верх