You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何将列表转为指定格式Map并发送API请求?

解决Flutter向API发送数据格式不匹配的问题

当前问题分析

你现在的代码有两个关键问题:

  1. 处理ID列表时,没必要把ID转成字符串再转集合,反而增加了不必要的类型转换,而且最后没生成符合要求的数组结构。
  2. API请求里只构造了一个包含单个availabilityId的Map数组,而不是根据每个选中ID生成对应的Map组成数组,这和Swagger要求的格式不匹配。

正确的处理方式

直接基于去重后的ID列表,生成Swagger要求的数组结构:

  1. 生成符合格式的请求数据:
// 先对选中的ID去重(假设_selectedId是List<int>类型)
var distinctList = _selectedId.toSet().toList();
// 将每个ID转换成{"availabilityId": 数字}的Map,再组成列表
List<Map<String, dynamic>> requestData = distinctList
    .map((id) => {'availabilityId': id})
    .toList();
  1. 修改Dio请求的data参数:
final response = await _dio.patch(
  'users/my-availabilities',
  data: requestData,
);

这样处理后,requestData的结构就是:

[
  {"availabilityId": 16},
  {"availabilityId": 17},
  {"availabilityId": 8}
]

完全匹配Swagger要求的格式,就能解决报错问题了。

内容的提问来源于stack exchange,提问作者Mr.Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:08