У меня есть файл json. Как я могу отправить его на сервер?

#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');
}