#json #flutter #dart
#json #flutter #dart
Вопрос:
У меня есть файл json. Как я могу отправить его на сервер с помощью flutter?
{
"likes":{
"job_name":"teh",
"job_address":"teh"
}
,
"equals":null
}
Я получаю следующую ошибку :
тип ‘_InternalLinkedHashMap<Строка, строка>’ не является подтипом типа ‘String’ в приведении типа
это мой код:
Map<dynamic, dynamic> body = {
"likes": {"job_name": "teh","job_address":"teh"},"equals":null};
Map header = {
"content-type": "application/json",
"accept": "application/json",
};
await http.post("myurl", headers: header, body: body).then((response) {
var responseBody = json.decode(utf8.decode(response.bodyBytes))["jobs"];
responseBody.forEach((item) {
jobs.add(JobModel.fromJson(item));
});
}).catchError((err) {
print('Error Message Here: $err');
});
Комментарии:
1. Пожалуйста, не смешивайте
await
иthen
, это затрудняет вам запись и затрудняет чтение для всех (включая вас). Выберите один. Мои предпочтения были бы правильнымиawait
, поэтому вы действительно можете получить значимый ответ на вопрос: можете ли вы сказать нам, какая строка выдает ошибку?2. спасибо. Сообщение об ошибке здесь: тип ‘_InternalLinkedHashMap<Строка, строка>’ не является подтипом типа ‘String’ в приведении типа
3. Я должен отправить файл JSON на сервер, как в примере выше, и сервер передает мне другой файл JSON.
Ответ №1:
import 'dart:convert';
import 'package:http/http.dart';
Map<String, dynamic> body = {
"likes": {
"job_name": "teh",
"job_address":"teh",
},
"equals":null,
};
Map<String, String headers = {
"content-type": "application/json",
"accept": "application/json",
};
try {
final res = await http.post("myurl", body: body, headers: headers);
final resJobs = jsonDecode(res.body)["jobs"];
if(resJobs != null) {
for(final item in resJobs) {
jobs.add(JobModel.fromJson(item))
}
}
} catch(e) {
print('Error Message Here: $e');
}