#json #api #flutter #asynchronous #dart
#json #API #flutter #асинхронный #dart
Вопрос:
В моем проекте я получаю свою строку json, которой позже я попытался присвоить переменную JsonResponse, но я получил ошибку типа: тип аргумента ‘Response’ не может быть присвоен типу параметра ‘String’.
Вот мой код:
Future getMahalle() async {
BaseOptions options = new BaseOptions(
baseUrl: globals.PROD_URL,
connectTimeout: 5000,
receiveTimeout: 3000,
);
Dio dio = new Dio(options);
dio.options.headers["Authorization"] = "Bearer ${globals.USER_TOKEN}";
try {
var response =
await dio.get(globals.SELECT_URL); //'api/hizlirapor/selects'
final jsonResponse = jsonDecode(response); //Here is the error line
MahalleModel mahalleList =
MahalleModel.fromJson(jsonDecode(response.data['mahalle']));
return mahalleList;
} on DioError catch (e) {
debugPrint("ERRORR!!!!!!!!!!!!! ${e.error.toString()}");
return null;
}
}
Я пытаюсь реализовать, например, эту статью и застрял. Спасибо за помощь!
Ответ №1:
Вам не нужно декодировать возвращаемый json, поскольку вы используете dio, dio делает это за вас.
// if it's a single value than try this.
MahalleModel mahalleList = response.data.map<MahalleModel>((mahalle) => MahalleModel.fromJson(mahalle));
// if it's a list than try this.
List<MahalleModel> mahalleList = response.data['mahalle'].map<MahalleModel>((mahalle) => MahalleModel.fromJson(mahalle)).toList();
Комментарии:
1. Я попробовал ваше второе предложение. И теперь я получил инструкцию консоли отладки: «Необработанное исключение: NoSuchMethodError: класс ‘_InternalLinkedHashMap<String, dynamic>’ не имеет метода экземпляра ‘map’ с соответствующими аргументами». Кстати, спасибо за информацию о dio. Я новичок в dio.
2. какой у вас frommap?
3. пожалуйста, проверьте сейчас .. пропустил «[‘mahalle’]» после ответа.данные … пожалуйста, попробуйте сейчас…
4. это работает? я отредактировал свой ответ … если ваш способ работает, то все в порядке … еще попробуйте отредактировать…. Список<MahalleModel> mahalleList = response.data[‘mahalle’].map<MahalleModel>((mahalle) => MahalleModel.FromJSON(mahalle)). ToList();
5. о, я вижу вашу правку в вашем ответе. это работает отлично. спасибо за предоставленную вами информацию, она была ценной.