首页 > 解决方案 > 如何将 json 列表传递给 Flutter 中的 http Post 请求正文?

问题描述

我有将由用户在表单中填写的对象。我将这些对象解析为 json 并将该 json 添加到列表中以传入请求正文。但我不能这样做。

submitQuestions() async {
var headers = {
  'Content-Type': 'application/json',
  'x-auth-token': '123edrfe33ewed'
};
var request = http.Request('POST', Uri.parse('url'));
request.body = json.encode({
  "school_id": "123",
  "teacher_id": "123",
  "observer_id": "123",
  "subject_id": "123",
  "subject_name": "abc",
  "class_id": "123",
  "batch_id": "123",
  "topic": "topic",
  "academic_year": "2019-2020",
  "remarks_data": [
    {
      "_id": "123",
      "heading": "heading",
      "Indicators": [
        {
          "name": "abc",
          "_id": "123",
          "remark": "abc",
          "point": 4
        },
        {
          "name": "abc",
          "_id": "123",
          "remark": "abc",
          "point": 1
        }
      ]
    },
    {
      "_id": "123",
      "heading": "abc",
      "Indicators": [
        {
          "name": "abc",
          "_id": "123",
          "remark": "abc",
          "point": 3
        }
      ]
    }
  ]
});
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
  print(await response.stream.bytesToString());
}
else {
  print(response.reasonPhrase);
}
}

当问题数量增加时,这个 json 会动态变化。我不能像这样将这个 json 文件放在正文中。如何做到这一点。

标签: flutterhttpdartpost

解决方案


请求正文尝试使用Map数据类型。您可以创建一个模型类来处理它。

例子

class School {
  String school_id;
  String teacher_id;
  String observer_id;

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();

    data['school_id'] = this.school_id;
    data['teacher_id'] = this.teacher_id;
    data['observer_id'] = this.observer_id;
    ...

    return data;
  }

}
/// Make sure your _school got data
School _school;
request.body = _school.toJson();

推荐阅读