отправляйте данные вложенного массива в api в flutter

#json #flutter #api #http #flutter-dependencies

#json #трепетать #API #http #флаттер-зависимости

Вопрос:

я пытаюсь отправить вложенные данные в API, используя метод HTTP post. но я не могу отправить данные из-за ошибки сопоставления. ниже приведен мой класс модели, который я создал для получения данных из API-

 class Assessment {  Assessment({  this.id,  this.subId,  this.question,  this.assessment,  });   String id;  String subId;  String question;  Listlt;Assessmentgt; assessment;   factory AssessmentQuestionList.fromJson(Maplt;String, dynamicgt; json) =gt;  AssessmentQuestionList(  id: json["id"],  subCategoryId: json["subId"],  question: json["question"],  assessment: Listlt;Assessmentgt;.from(  json["assessment"]  .map((x) =gt; Assessment.fromJson(x))),  );   Maplt;String, dynamicgt; toJson() =gt; {  "id": id,  "assessmentId": assessmentId,  "subCategoryId": subCategoryId,  "question": question,  "assessment":  Listlt;dynamicgt;.from(assessment.map((x) =gt; x.toJson())),  }; }  class Assessment {  Assessment({  this.id,  this.assessmentQuestionId,  this.option,  this.isChecked,  });   String id;  String assessmentQuestionId;  dynamic option;  bool isChecked;   factory AssessmentAnswerList.fromJson(Maplt;String, dynamicgt; json) =gt;  AssessmentAnswerList(  id: json["id"],  assessmentQuestionId: json["assessmentQuestionId"],  option: json["option"],  //optionValues.map[json["option"]],  isChecked: json["isChecked"],  );   Maplt;String, dynamicgt; toJson() =gt; {  "id": id,  "assessmentQuestionId": assessmentQuestionId,  "option": option, //optionValues.reverse[option],  "isChecked": isChecked,  }; }  

после составления списка и динамического добавления данных в него я отправляю данные в свой будущий метод, который будет использоваться для вызовов api, как показано ниже —

 Futurelt;http.Responsegt; saveassess(String authToken, String id, String assessmentId,  var QuestionList, String childUserId,  String notes) async {   String uriparts =apiEndPoint.getUriParts('assess/Assess');  Uri Url = apiEndPoint.getHTTPUri(uriparts);   final response = await http.post(  Url,  headers: lt;String, Stringgt;{  'Content-Type': 'application/json; charset=UTF-8',  'Authorization': authToken  },  body: jsonEncode(lt;String, dynamicgt;{  "id": id,  "assessmentId": assessmentId,  "assessmentQuestionAnswerList": QuestionList,  "childUserId": childUserId,  "notes": notes,  }),  );  print(response.body);  handleAssesmentsResponse(response);  }  

может ли кто-нибудь сказать мне, что я делаю неправильно, так как я впервые работаю с вложенными вызовами API? Спасибо

Ответ №1:

вы также должны закодировать каждый отдельный список, как показано ниже,

 jsonEncode(lt;String, dynamicgt;{  "id": id,  "assessmentId": assessmentId,  "assessmentQuestionAnswerList": jsonEncode(QuestionList),  "assessmentQuestionAnswerList.assessmentAnswerList": jsonEncode(AnswerList),  "childUserId": childUserId,  "notes": notes,  }),  

Комментарии:

1. я сделал это, но я получаю ошибку — I/flutter ( 2723): не удалось подробно Преобразовать объект в кодируемый объект не удалось: LinkedHashSet len:8

2. возможно, вам потребуется указать тип данных для кодирования списка вопросов, поскольку это не тип данных, который не предопределен в dart