'Ожидалось значение типа 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!');
}
}